以" ="结尾的ruby方法是什么?意思?
请参阅此打印输出中的可用方法:
<div class="form-group">
<button class="btn btn-default" name="checkAvail">Check Availability</button>
<label for="emailAddress" class="col-sm-5 control-label">Email:</label>
<div class="col-sm-4">
<input type="email" class="form-control" id="emailAddress" name="emailAddress" placeholder="Email" autocomplete="off">
</div>
</div>
例如,label =和label?
之间的区别是什么?答案 0 :(得分:9)
foo=
与任何其他方法没有什么不同,除了:
=
字符之前添加空格。
class Foo
def foo=(other)
puts 'hi'
end
end
Foo.new.foo = 7
hi
class Goo
def goo=
puts 'hi'
end
end
Goo.new.goo=
Ruby说,“我在等待争论......”。所以我们提供一个:
4
然后她抱怨她要求你做什么:
#=> ArgumentError: wrong number of arguments (1 for 0)
=
方法通常用于为实例变量创建setter(如果未使用attr_acccessor
或attr_writer
):
class Foo
def initialize(foo)
@foo=foo
end
# getter
def foo
@foo
end
# setter
def foo=(other)
@foo = other
end
end
f = Foo.new('dog')
f.foo
#=> "dog"
f.foo = 'cat'
#=> "cat"
f.foo
#=> "cat"
答案 1 :(得分:3)
以&#34; =&#34;结尾的方法正在设置实例变量
在这里查看答案:why-use-rubys-attr-accessor-attr-reader-and-attr-writer
答案 2 :(得分:2)
它相当于其他语言中的setter方法,它只是惯例,所以看起来更自然
obj.description="Fun Site"
VS
obj.setDescription("Fun Site")
答案 3 :(得分:1)
以=
您可以通过运行以下代码来看到这一点:
def bob=
puts "bob="
end
p send('bob='.to_sym)
特殊的是'='中缀运算符。当你写self.bob = "bill"
时。它被解释为self.send('bob='.to_sym, "bill")
。
在方法的末尾加上?
是一个提示,它返回一个布尔值(true / false)。以!
结尾的方法提示该方法影响实例。请参阅String#chomp vs String#chomp。
您可以在http://www.tutorialspoint.com/ruby/ruby_operators.htm了解有关ruby运算符的更多信息,并详细了解https://github.com/bbatsov/ruby-style-guide#naming
处的命名约定