当您有多个参数时,使用块语句的yield语句

时间:2014-04-16 22:30:08

标签: ruby block

运行此代码时收到的错误消息是"未定义的局部变量或方法`john'"。如果我有一个yield语句,我不允许用参数定义一个方法吗?

def greet(name)
    puts "hello #{name}"
    yield
end

greet(john) {puts "Nice to meet you!"}

1 个答案:

答案 0 :(得分:1)

你应该打电话给:

greet('john') {puts "Nice to meet you!"}

更正代码: -

def greet(name)
    puts "hello #{name}"
    yield
end

greet('john') {puts "Nice to meet you!"}
# >> hello john
# >> Nice to meet you!

如果您仅将'john'写为john,则不会将其视为 string ,而是如果任何局部变量或具有相同的方法,Ruby将尝试查找它名字存在。如果没有找到,则会在您遇到错误时抛出错误。