#encoding:utf-8
# ---------动态执行
#执行2 + 2
puts eval "2 + 2"
#=》4
#执行15 * 2 (Q表示双引号会进行运算,q表示单引号会原样输出)
number = 15
code = %Q{#{number} * 2}
puts code
puts eval(code)
#=》4
#=》#{number} * 2
# ---------绑定
def binding_test
return binding
end
binding_function = binding_test
x = 9
eval("x = 10")
eval("x = 50", binding_function)
#处理当前环境的局部变量
eval("puts x")
#处理binding环境的局部变量
eval("puts x", binding_function)
#exec "data.rb"
#puts "end"
#ruby的线程不是由操作系统来提供,由ruby解释器来执行
#优点:跨平台性能很好
#缺点:如果需要调用操作系统并等待回应,则整个ruby程序就会暂停
#新开线程
child = fork do
sleep 1
puts "child ok"
end
puts "waiting for child process"
Process.wait child
puts "end"
#线程
#创建10个线程随机睡眠,打印
threads = []
10.times do
thread = Thread.new do
10.times {|i|
print i
$stdout.flush
#转让线程执行权
Thread.pass
sleep 1
}
end
threads <<thread
end
puts Thread.list.inspect
#join让主线程等待至线程执行完毕
threads.each() do |thread|
thread.join(3)
end
ruby小例子-动态执行,绑定,线程
最新推荐文章于 2024-09-19 17:34:40 发布