python - "Parseltongue": get Ruby to Speak a bit of Python?

标签 python ruby multilingual

只是为了兴趣而已 - 社区 wiki - 我们能让 Ruby 理解多少 Python? [也许做相反的事情也同样有趣]。

这个实验(实际上是这样)也许是为了看看用 Ruby-Cross-Python 脚本可以编写多少内容来产生相同的输出。我想这里允许的唯一“作弊”是允许 Ruby 语句出现在最终的“通用”脚本之前。 [如下面的“len”定义]。

例如,这适用于以下两种情况:

a=[1,2,3]
mystring="hello"
bobby="hello"*3
epoch=1270123200
map={}
map['supamu']='egusu'
map['dedu']='paroto'

keys=map.keys()
values=map.values()

在 Ruby 中执行此操作:

class Object
    def len(object)
        object.size
    end
end

class Object
    def str(object)
        object.to_s
    end
end

意味着这现在适用于:

a=[1,2,3]
mystring="hello"
len(a)
len(mystring)
str(123)

我认为由于不同的语法要求,条件和循环会带来麻烦。 (例如,Python 行末尾的“:”...)

最佳答案

要完全回答这个问题可能需要进行一些分析。两种语言中的控制结构都是为了让我们的生活更轻松,让我们编程时代码更具可读性而定义的,但它们可以通过像 Smalltalk 中那样的方法来实现。迭代和条件(“case”语句除外)与此博客中描述的类似:Emulating Smalltalk’s Conditionals in Ruby 。例如,“if”看起来像这样:

(an_object.nil?).
 if_true  { puts "true" }.
 if_false { puts "false" }

我建议通过用两种语言创建对象的扩展来处理迭代和条件,这些扩展将控制结构定义为方法。这样就可以编写具有以两种语言运行的控制结构的代码。

但是还有其他一些事情,这些事情存在于语言设计的更深层次,这会更难处理。在 python 中,每个实例变量都是公共(public)的,在 ruby​​ 中它们是私有(private)的。改变 self 有什么区别..?

也许如果我们开始减少和省略方法调用的语法内容,我们最终会得到一个非常简单的语法......类似于smalltalk。

关于python - "Parseltongue": get Ruby to Speak a bit of Python?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2063962/

相关文章:

ruby - rmagick 无法更改字体系列

ruby-on-rails - rails : Best practice for model dependency class locations?

mongodb更新大型集合数组中的对象

python - Django:如何使用子查询注释 M2M 或 OneToMany 字段?

python - 在Python中抓取错误: 'charmap' codec can't encode character/can't concat str to bytes

python - 链接多个python脚本依次运行

xml - 多语言 sitemap.xml 文件

python - 如何在 Webfaction 上部署 Flask 应用程序?

ruby - 默认 ruby​​ 版本的 RVM 问题

github - 在 GitHub repo 上添加多个 README