Smalltalk,Perl,Python和Ruby之间的集合和Stream类等价

时间:2011-08-25 01:43:29

标签: python ruby perl programming-languages smalltalk

我对Python,Perl和Ruby等语言的经验很少,但我从一段时间以来就开发过Smalltalk。有一些非常基本的Smalltalk类非常流行并且跨Smalltalk实现:

FileStream
ReadWriteStream
Set
Dictionary
OrderedCollection
SortedCollection
Bag
Interval
Array

哪些类是Python,Perl和Ruby中等效或有效的语义替换?我找到了几个比较语法的语言比较页面,但是在核心库和基础库的翻译方面似乎没有什么帮助。

我也想知道在Smalltalk中是否存在Python,Perl或Ruby中的基类或核心类,反之亦然?

3 个答案:

答案 0 :(得分:7)

的Perl

我会回答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)

的Python

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。