运行此代码时收到的错误消息是"未定义的局部变量或方法`john'"。如果我有一个yield语句,我不允许用参数定义一个方法吗?
def greet(name)
puts "hello #{name}"
yield
end
greet(john) {puts "Nice to meet you!"}
答案 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将尝试查找它名字存在。如果没有找到,则会在您遇到错误时抛出错误。