在ruby中将nil参数传递到方法中
有没有什么方法可以让ruby方法在给定X个参数并且排除超过X个参数的情况下也能做一些事情 例如:在ruby中将nil参数传递到方法中,ruby,Ruby,有没有什么方法可以让ruby方法在给定X个参数并且排除超过X个参数的情况下也能做一些事情 例如: def greet (name) name != nil ? "Hello, ${name}!" : "Hello!" end print greet() 如果返回“你好!”我会: def greet(name = nil) name ? "Hello, #{name}!" : "Hello!" end >> greet("Joe") #⇒ "Hello, Joe!" &g
def greet (name)
name != nil ? "Hello, ${name}!" : "Hello!"
end
print greet()
如果返回“你好!”我会:
def greet(name = nil)
name ? "Hello, #{name}!" : "Hello!"
end
>> greet("Joe")
#⇒ "Hello, Joe!"
>> greet
#⇒ "Hello!"
无论是否要覆盖任何数量的参数,它们通常使用
splat
参数:
def greet(*params)
case params.size
when 0 then "Hello!"
when 1 then "Hello, #{params.first}!"
else "Hello, ya all there!"
end
或:
因此,如果要传递n个参数,可以使用*args(将其转换为参数列表)进行传递
另外,您可以阅读更多关于它的内容这里有一个简单的方法,可以处理任意数量的参数:
def greet(*names)
['Hello', *names].join(', ') + '!'
end
puts greet
# Hello!
puts greet('John')
# Hello, John!
puts greet('Jane', 'John')
# Hello, Jane, John!
您可以添加更多的逻辑来显示
“Hello,Jane,John&Jack!”
Smth像def greet(name=nil)
?您的意思是这可以包含任意数量的名称吗?这个答案几乎不包括“X个参数”,但很难理解OP.I的确切语句。插入X==0。
def test(*args)
args.empty? "if true something" : "if false something"
end
def greet(*names)
['Hello', *names].join(', ') + '!'
end
puts greet
# Hello!
puts greet('John')
# Hello, John!
puts greet('Jane', 'John')
# Hello, Jane, John!