arrays - Pharo 3 中文字数组和动态数组的区别

标签 arrays dynamic smalltalk literals pharo

阅读 Pharo 的文档(Pharo By Example),第一个区别在于数组的制作方式。

文字将遵循此语法

myArray := #(1 2 3)

而一个动态数组
myArray := {1+2 . 4-2 . 3 }

文字数组将直接取值,包含数字、字符串和 bool 值。而动态数组将获取完整的消息,这些消息将编译并将其返回值插入到数组中。

两者之间还有其他区别吗?如果动态数组可以完成文字数组的功能,为什么还存在文字数组?

最佳答案

动态数组如 { 1 + 2 . 4 - 2 . 3 }基本上是一个语法糖:

Array
  with: 1 + 2;
  with: 4 - 2;
  with: 3

这是有道理的,因为数组经常被创建。您也可以将其合并以创建字典,例如:
{
  #keyOne   -> 5 .
  #keyTwo   -> 3 .
  #keyThree -> 1
} asDictionary

文字数组作为实际文字并且在编译时之前定义。

关于arrays - Pharo 3 中文字数组和动态数组的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23672415/

相关文章:

ios - 通过索引从数组中获取对象,即从另一个数组中获取

python - 在 Python 中从数组中删除字符串引号

c++ - 分配给动态数组时,是否会在 C++ 中分配内存?

linq - 为什么使用 Linq 的 .Select() 返回 IEnumerable<dynamic> 即使类型已明确定义?

c - 如何为 C 中的结构数组正确分配内存

javascript - 如果输入与数组名称不匹配则显示 "no results"(javascript)

mfc - 在 MFC 中动态创建控件(集合问题)

smalltalk - 如何在 Squeak smalltalk 的类中搜索字符串?包裹里面怎么样?

text - 如何在 Pharo 1.4 中正确解码来自 FileSystemReadStream 的文本文件

Smalltalk 棘手的语法