class A
attr_accessor :rank
def change_rank
rank = rank + 1
end
end
a = A.new
a.rank = 5
p a.rank
a.change_rank
p a.rank
Run Code Online (Sandbox Code Playgroud)
为 rank = rank + 1 (undefined method + for nil:Nilclass) 产生错误。对“rank”方法的隐式调用不应该返回实例变量@rank 的值吗?出于某种原因,如果我将第 4 行更改为:
self.rank = self.rank + 1
Run Code Online (Sandbox Code Playgroud)
为什么显式调用 rank 方法有效而隐式调用无效?
当CSS3 [attribute*= value] Selector基本上完成同样的事情时,为什么我们需要CSS [attribute | = value]选择器,浏览器兼容性几乎相似?有没有第一个CSS选择器做的事情,第二个不能?这是第一次遇到两个非常相似的选择器,并想知道为什么第一个存在于第一位.
假设我没有using System
顶部的C#应用程序.这将有效:
string a;
Run Code Online (Sandbox Code Playgroud)
但这不会:
String a;
Run Code Online (Sandbox Code Playgroud)
为什么第一个代码有效,尽管C#类型的关键字string
在后台映射中System.String
(这个代码中没有包含)?他们不需要using System
运作吗?
我有这个代码:
class Parent
{
public Parent(string someArg)
{
Console.WriteLine("Parent");
}
}
class Child : Parent
{
public Child(string someArg)
{
Console.WriteLine("Child");
}
}
Run Code Online (Sandbox Code Playgroud)
然后我实例化:
var child = new Child("something");
Run Code Online (Sandbox Code Playgroud)
给我一个错误.我知道它与父构造函数有关,但我不确定为什么会这样.base
每次我在父级中有一个不是无参数的构造函数时,我是否需要使用?为什么?