我对Python,Perl和Ruby等语言的经验很少,但我从一段时间以来就开发过Smalltalk。有一些非常基本的Smalltalk类非常流行并且跨Smalltalk实现:
FileStream
ReadWriteStream
Set
Dictionary
OrderedCollection
SortedCollection
Bag
Interval
Array
哪些类是Python,Perl和Ruby中等效或有效的语义替换?我找到了几个比较语法的语言比较页面,但是在核心库和基础库的翻译方面似乎没有什么帮助。
我也想知道在Smalltalk中是否存在Python,Perl或Ruby中的基类或核心类,反之亦然?
答案 0 :(得分:7)
我会回答Perl,因为我能熟练使用Perl和Smalltalk。
Smalltalk的字典非常接近Perl的哈希类型。字典使用对象的对象等效。 Perl使用简单的字符串作为键,因此灵活性有限。
Smalltalk的OrderedCollection与Perl的数组类型非常接近。
Smalltalk的FileStream有点像Perl的文件句柄,因为它们代表了外部文件或设备的数据流。
这就是它,因为Perl只有哈希,数组和文件句柄。 :)
答案 1 :(得分:4)
FileStream -> File
ReadWriteStream -> IO (or other things that duck type like it)
Set -> require 'set', then use the Set class
Dictionary -> Hash
OrderedCollection -> Array
SortedCollection nothing similar
Bag nothing similar
Interval -> Range
Array Ruby has no fixed-length collection class.
答案 2 :(得分:2)
FileStream -> file
ReadWriteStream -> file
Set -> set
Dictionary -> dict
OrderedCollection -> list
SortedCollection -> no equivalent object (must call sort on a list)
Bag -> no equivalent object (must implement using dict)
Interval -> no equivalent object (but a range() function exists for making lists)
Array -> no equivalent (tuple is read-only, fixed length. list is variable length)
我应该注意,Python 2.7的collections.Counter对象相当于Bag。