Ruby 初始化方法何时使用括号
Ruby initialize method when to use parenthesis
我想了解初始化方法,但在使用括号时遇到问题。在下面的例子中,from here,他们没有在括号中使用 "apple" 和 "ripe",但是在第二个例子中他们只使用了 (k)。我们如何知道在什么情况下使用括号?
class Fruit
def initialize
@kind = "apple"
@condition = "ripe"
end
end
class Fruit
def initialize( k )
@kind = k
@condition = "ripe"
end
end
在您的第二个示例中,括号用于括起 initialize
方法的参数列表。
def initialize
@kind = "apple"
@condition = "ripe"
end
不带参数。 "apple"
和 "ripe"
是字符串文字。如果您愿意,可以使用括号,但按照约定它们会被省略。代码相当于:
def initialize() #no parameters
@kind = "apple"
@condition = "ripe"
end
但是为简洁起见,将空参数列表括起来的括号去掉了。
在你的第二个例子中:
def initialize( k )
@kind = k
@condition = "ripe"
end
@kind
初始化为参数k
的值。
调用Fruit.new
时将使用无参数initialize
方法。要使用第二个示例中的那个,您需要在创建对象时为参数 k
提供一个值,Fruit.new("apple")
很简单。如果您需要,例如,在 class 的初始化方法中为某些变量设置一些默认值,您根本不需要使用括号,只需将变量的值设置到方法中即可足够。这正是他们所做的:
def initialize
| @kind = "apple"
| @condition = "ripe"
| end
例如,如果您需要为一个或多个变量设置自定义值,您可能需要使用括号将自定义值作为参数传递到对象创建调用中,如(您可能在括号中使用与要发送的自定义值一样多的变量):
def initialize( k )
| @kind = k
| @condition = "ripe"
| end
因此,您可以像这样创建对象:
Fruit.new your_custom_value_or_object
如果你不传递任何参数,你可以在你的初始化方法括号中为你的参数设置一个默认值,这正是他们所做的:
def initialize( k="apple" )
| @kind = k
| @condition = "ripe"
| end
如果在创建对象时不传递任何参数,那么@kind将被设置为"apple"。
我想了解初始化方法,但在使用括号时遇到问题。在下面的例子中,from here,他们没有在括号中使用 "apple" 和 "ripe",但是在第二个例子中他们只使用了 (k)。我们如何知道在什么情况下使用括号?
class Fruit
def initialize
@kind = "apple"
@condition = "ripe"
end
end
class Fruit
def initialize( k )
@kind = k
@condition = "ripe"
end
end
在您的第二个示例中,括号用于括起 initialize
方法的参数列表。
def initialize
@kind = "apple"
@condition = "ripe"
end
不带参数。 "apple"
和 "ripe"
是字符串文字。如果您愿意,可以使用括号,但按照约定它们会被省略。代码相当于:
def initialize() #no parameters
@kind = "apple"
@condition = "ripe"
end
但是为简洁起见,将空参数列表括起来的括号去掉了。
在你的第二个例子中:
def initialize( k )
@kind = k
@condition = "ripe"
end
@kind
初始化为参数k
的值。
调用Fruit.new
时将使用无参数initialize
方法。要使用第二个示例中的那个,您需要在创建对象时为参数 k
提供一个值,Fruit.new("apple")
很简单。如果您需要,例如,在 class 的初始化方法中为某些变量设置一些默认值,您根本不需要使用括号,只需将变量的值设置到方法中即可足够。这正是他们所做的:
def initialize
| @kind = "apple"
| @condition = "ripe"
| end
例如,如果您需要为一个或多个变量设置自定义值,您可能需要使用括号将自定义值作为参数传递到对象创建调用中,如(您可能在括号中使用与要发送的自定义值一样多的变量):
def initialize( k )
| @kind = k
| @condition = "ripe"
| end
因此,您可以像这样创建对象:
Fruit.new your_custom_value_or_object
如果你不传递任何参数,你可以在你的初始化方法括号中为你的参数设置一个默认值,这正是他们所做的:
def initialize( k="apple" )
| @kind = k
| @condition = "ripe"
| end
如果在创建对象时不传递任何参数,那么@kind将被设置为"apple"。