Ruby[重点求助]方法的参数怎么可以调用方法? 10
用参数传变量,或返回值是变量的方法是正常,但我想做到的是直接用参数调用方法,其结果往往是直接就执行调用的方法了,这不是我要的结果例:defaaprint"123"endd...
用参数传变量,或返回值是变量的方法是正常,但我想做到的是直接用参数调用方法,其结果往往是直接就执行调用的方法了,这不是我要的结果
例:
def aa
print "123"
end
def bb(ss)
aaa=gets
ss
end
bb(aa)
我想实现的效果是这样的:
def bb
aaa=gets
print "123"
end
这在实际应用方面能节省大量的代码,请问这应该怎么实现 ???
简单明了地用代码说明,卖弄代码艺术的就算了,看得明都需要半天,结果却只说了一句话 展开
例:
def aa
print "123"
end
def bb(ss)
aaa=gets
ss
end
bb(aa)
我想实现的效果是这样的:
def bb
aaa=gets
print "123"
end
这在实际应用方面能节省大量的代码,请问这应该怎么实现 ???
简单明了地用代码说明,卖弄代码艺术的就算了,看得明都需要半天,结果却只说了一句话 展开
1个回答
2017-05-04 · 百度知道合伙人官方认证企业
育知同创教育
1【专注:Python+人工智能|Java大数据|HTML5培训】 2【免费提供名师直播课堂、公开课及视频教程】 3【地址:北京市昌平区三旗百汇物美大卖场2层,微信公众号:yuzhitc】
向TA提问
关注
展开全部
1. 使用send方法
第一种实现动态方法调用是使用send方法,send方法在Object类中定义,方法的第一个参数是一个符号用来表示所要调用的方法,后面则是所调用方法需要的参数。
“This is a dog1″.send(:length) => 14
上面的代码中通过send方法去对一个字符串执行length操作,返回字符串的长度。
class TestClass
def hello(*args)
”Hello ” + args.join(‘ ‘)
end
end
a = TestClass.new
puts a.send :hello, “This”, “is”, “a”, “dog!”
执行结果为:
Hello This is a dog!
2. 使用Method类和UnboundMethod类
另一种实现动态方法调用是使用Object类的method方法,这个方法返回一个Method类的对象。我们可以使用call方法来执行方法调用。
test1 = “This is a dog1″.method(:length)
test1.call => 14
class Test
def initialize(var)
@var = var
end
def hello()
”Hello, @var = #{@var}”
end
end
第一种实现动态方法调用是使用send方法,send方法在Object类中定义,方法的第一个参数是一个符号用来表示所要调用的方法,后面则是所调用方法需要的参数。
“This is a dog1″.send(:length) => 14
上面的代码中通过send方法去对一个字符串执行length操作,返回字符串的长度。
class TestClass
def hello(*args)
”Hello ” + args.join(‘ ‘)
end
end
a = TestClass.new
puts a.send :hello, “This”, “is”, “a”, “dog!”
执行结果为:
Hello This is a dog!
2. 使用Method类和UnboundMethod类
另一种实现动态方法调用是使用Object类的method方法,这个方法返回一个Method类的对象。我们可以使用call方法来执行方法调用。
test1 = “This is a dog1″.method(:length)
test1.call => 14
class Test
def initialize(var)
@var = var
end
def hello()
”Hello, @var = #{@var}”
end
end
追问
复制真是辛苦了
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询