Perl、Ruby、JS和Python数组/列表字面量声明方式简单对比

我很乐意对各种语言进行比较,因此经常做一些别人眼中毫无意义可言的事。很多语言之间都有借鉴,比如JS借鉴Lisp,PhP借鉴Perl,Java借鉴C++等等。不过,今天的话题是几门比较相近的语言,它们之间的数组字面量声明方式。

数组 ,亦或索引数组,在某些地方叫列表。而另一种叫做关联数组的数组,习惯叫哈希表或哈希数组。在这里,我们暂且只谈前者,而且只谈论字面量。而后者的话,改日若有时间再谈。

先来看一看JS的数组字面值,因为它最简单(当然也很强大)。

JS数组字面量

#!/usr/bin/env node

// One-demensional array
const myArray = ['Sophia', 'David', 'White'];
myArray[0]              // 'Sophia'

// Multidimensional array
const myMDArray = [
  ['apple', 'orange', 'pear'],
  ['pineapple', 'banana']
];
myMDArray[0][0]         // 'apple'

// Hash array
const myHash = []
myHash['key'] = 'value';

JS的数组字面量就是用方括号(“[]”)包裹起来的,如果要获取值,就数组名接方括号,方括号内填入数组元素索引,即可获得对应索引值。如果索引是Unicode字符串,将默认为哈希数组(这不是我们的重点)。

关于数组的更多介绍,请参考MDN文档:Array-JavaScript | MDN

Python的与JS的类似:

Python数组字面量

#!/usr/bin/env python3

# One-demensional list
myArray = ['Sophia', 'David', 'White'];

# Multidimensional list
myMDArray = [
  ['apple', 'orange', 'pear'],
  ['pineapple', 'banana']
]

# Hash ?
# Wrong, not this way
# myHash = []
# myHash['key'] = 'value'

关于Python列表的其他参考,请见docs.pyhon.org – list

Ruby和Perl放到最后,因为这两兄弟有很多相同之处,有的地方甚至会比较怪异。

Ruby数组字面量

#!/usr/bin/env ruby

# One-demensional array
myArray = ['Sophia', 'David', 'White']
myArray1 = %w{
  Sophia
  David
  White
}

=begin
# OR
my Array1 = %w/
  Sophia
  David
  White
/
=end

# Multidimensional array
myMDArray = [
  ['apple', 'orange', 'pear'],
  ['pineapple', 'banana']
]

我们看到,可以借助“%w{…}”操作符快速声明数组。在此处请注意“%w”后接的不一定要是花括号,可以是任意不产生歧义的字符对,比如“%w/…/”、“%w[…]”等等,。更多请参考ruby-doc.org — Class:Array(Ruby 2.4.2)

我想在数组声明上,Ruby和Perl的的共同之处就在此,Perl数组的快速声明方式也是使用操作符“qw{…}”或“qw/…/”等类似的符号。依据两门语言的诞生时间,猜测应该是Ruby借鉴了Perl这种语法。

Perl数组字面量

#!/usr/bin/env perl

# One-demensional array
my @myArray = ('Sophia', 'David', 'White');
my @myArray1 = qw{Sophia David White};

# array reference
my $myRefArray = ['Sophia', 'David', 'White'];

# Multidimensional array ?
# Perl doesn't have that, but we could use this expression
#  -- an array of array references
my @myMDArray = (
  ['apple', 'orange', 'pear'],
  ['pineapple', 'banana']
);

关于Perl数组,更多请参见perldoc.perl.org – perllol

当然,这里只是做一些简单的比较,并非权威参考。权威参考的链接已经在博客中给出,里面会系统地介绍各个语言的数组。

作者: YanWen

Web 开发者

发表评论

Fill in your details below or click an icon to log in:

WordPress.com 徽标

You are commenting using your WordPress.com account. Log Out /  更改 )

Google photo

You are commenting using your Google account. Log Out /  更改 )

Twitter picture

You are commenting using your Twitter account. Log Out /  更改 )

Facebook photo

You are commenting using your Facebook account. Log Out /  更改 )

Connecting to %s