You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Ruby中将子例程(subroutine)存储到变量中?

你写的代码确实存在错误,具体问题和修改方案如下:

错误原因

Ruby和Python的函数引用逻辑有差异:Python中写不带括号的函数名会获取函数本身的引用,而Ruby的方法调用默认可以省略括号,你写x = printSample时,程序会直接尝试执行printSample方法,该方法要求传入1个字符串参数,这里没有传参,运行时会直接抛出参数数量不匹配的错误,无法执行到后续步骤。

正确实现方案

要将方法存到变量中,需要用method方法显式获取方法对象的引用,调用存储的方法时使用call方法执行,修改后代码如下:

def printSample(str)   
   puts str 
end  
# 显式获取printSample方法的引用,参数为方法名对应的符号
x = method(:printSample)
str = "你好" 
# 调用存储的方法
x.call(str)

上述代码运行后会输出:

你好

内容的提问来源于stack exchange,提问作者jolyne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 04:24:00