尝试编写通过命令行与用户进行交互通信的程序。 与正常的irb交互时,我们可以给块提供评估或留空。像这样:
irb(main):001:0> 1+2
#=> 3
irb(main):002:0> class Foo
irb(main):003:1> def foo
irb(main):004:2> print 1
irb(main):005:2> end
irb(main):006:1> q
[2156][giles@nikola:~]$
#=> nil
在此交互式shell上键入“ q”后,我们应该能够退出irb shell以及整个程序。
我创建了一个程序来打开此交互式会话,我们可以对程序的现有内容执行某些操作。就像我们可以更改@var的值一样 irb(main):001:0> @var ='new' =>新
但是我想使用绑定来实现此目的,也不想在我的代码中使用“ #require'irb'”来调用irb方法。
我的解决方案:
require 'irb'
class C
def my_method
@var = 'hi'
$my_binding = binding
IRB.start(__FILE__)
end
end
C.new.my_method
预期结果:我想以-
class Bind
def get_binding(param)
binding
end
end
....
答案 0 :(得分:0)
我想我想要这样的东西(创建了IRB,但仍然无法评估语句):
class Demo
def initialize(n)
@secret = self.class.send(:define_method,n) { instance_eval"#{n}" }
end
def get_binding
binding
end
end
user_input = ''
k2 = Demo.new(user_input)
b2 = k2.get_binding
until user_input == 'q' do
user_input = gets.chomp
puts eval('@secret', b2)
end