你说那个要用到分词器和语法树,见书籍《自制编程语言》,我说的是把 vbs 脚本转 ruby 代码运行
vbscript 的常用的 activex 对象也可以用 ruby 的类和 eval, send 函数实现
@Rei 想问一下为什么我楼上的代码,id 这个变量名被识别成了关键字?不懂。
我感觉楼主的代码可以写得简洁一些。我只有 windows 环境。
SEED_DIR = File.expand_path "~/.config/plant_a_good_karma_seed"
CLASSIC = File.expand_path "#{SEED_DIR}/classic"
#CLASSIC = './classic' # windows 测试
list = Dir.glob('*.txt', base: CLASSIC)
file_name = list[rand(list.size)]
classic_name = /-(.*?)\.txt/.match(file_name)[1]
lines = File.readlines("#{CLASSIC}/#{file_name}")
ids = (0..(lines.size-2)).select{|x| lines[x].size == lines[x+1].size }
id = ids[rand(ids.size)]
puts lines[id], lines[id+1], " --《#{classic_name}》"
顺便说一下,楼主的脚本写法没有考虑到连续三句古文长度不相等的情况。
问题大概找到,string.encode 参数好像只能这样写:{:invalid => :replace, :undef => :replace}),不能直接指定:invalid 为具体字符
用 2.6.5 版本仍然有问题,可能我环境乱了,正在重新安装 ruby 和 msys
golang 和 ruby 的风格相差太大。go2 要加泛型,结果不少用户在讨论是否违反了大道至简的哲学……
真心希望这种宗教、禅学不要祸害那么多编程语言
个人喜欢c#和ruby,恰好这两个的主要竞争对手都是热门语言。
我在 v2 的一个冷门节点上截了楼主图的回复,不过我是打够马赛克的,除了本就知道本坛的,应该看不出来是本坛的帖。
如果我的转贴对楼主及其它人有不好的影响,我在这里道歉。本来我就对楼主的言论是部分的同意,因此想转发出去看看更多人的意见,仅此而已。