作者brianhsu (坟墓)
看板Programming
标题Re: [问题] 关於scala的 symbol literals
时间Wed Oct 2 10:14:11 2013
※ 引述《lingcandy (candyling)》之铭言:
: 小妹最近刚开始接触 scala
: 在此之前 有接触过java 但对 functional programming没有接触过
: 最近读到 scala的英文教学书里的 symbol literal 实在不是很了解
: 去爬了很多文发现他很像 ruby 里的 symbol
: 根据自己的理解 主要的概念 就是说 symbol可以自订identifier
: (如果也什麽错误或观念需要厘清的可以指证我 谢谢~~~)
比较简单的想法是把他想成和数值 literal 和字串 literal 是类似的东西,
例如你写 1 的话会是整数 1,1L 会是长整数 1,"Hello World" 是一个字串一样。
: compile:
: scala> updateRecordByName(favoriteAlbum, "OK Computer")
: <console>:6: error: not found: value favoriteAlbum
: updateRecordByName(favoriteAlbum, "OK Computer")
: Instead, and almost as concisely, you can pass a symbol literal:
: scala> updateRecordByName('favoriteAlbum, "OK Computer")
: 想请问各位大大
: 这边有点不懂QQ 为什麽直接写favoriteAlbum会有错呢??
因为写 favoriteAlbum 的话,会去找 favoriateAlbum 这个变数/函式这些,
但你没有宣告过这个变数,自然会找不到
'favoriteAlbum 的话,则是一个型态与 Symbol 相符的常数,所以可以丢到
updateRecordByName 里面。
--
~
白马带着她一步步地回到中原。白马已经老了,只能慢慢地走,
'v'
Brian Hsu 但终是能回到中原的。江南有杨柳、桃花,有燕子、金鱼……
// \\
( 坟 墓 )
/( )\
但这个美丽的姑娘就像古高昌国人那样固执。 【白马啸西风】
^`~'^
http://bone.twbbs.org.tw/blog 『那都是很好很好的,可我偏不喜欢。』
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 140.109.19.194
1F:推 lingcandy:喔喔!我了解了!!谢谢b大!! ^_^111.240.182.141 10/02 11:15
2F:推 lingcandy:不好意思可否再请问在SCALA中assignment111.240.182.141 10/02 11:32
3F:→ lingcandy:观念,有看到文章说到Assignment result111.240.182.141 10/02 11:33
4F:→ lingcandy:值是unit valu,type也是unit type,所111.240.182.141 10/02 11:34
5F:→ lingcandy:以在print(n=10)的 res 是unit,但为何111.240.182.141 10/02 11:35
6F:→ lingcandy:又可以在宣告变数时直接使用val n=10呢?111.240.182.141 10/02 11:35
7F:→ lingcandy:=不是就是unit value 为何val n=10可以111.240.182.141 10/02 11:36
8F:→ lingcandy:得到 res n:Int = 10的结果呢??111.240.182.141 10/02 11:36
9F:推 mars90226:unit type应该类似Java的null 140.112.16.139 10/02 11:48
10F:→ Chikei:unit type = java/c的void,print(n=10) 211.72.92.133 10/02 18:30
11F:→ Chikei:type是unit指的是print这个函数不return东 211.72.92.133 10/02 18:31
12F:→ Chikei:...别管上面我搞笑了orz 211.72.92.133 10/02 18:34
13F:→ Chikei:因为val n = 1是val n:Int = 1的简写 211.72.92.133 10/02 18:36
14F:→ Chikei:val x = (n = 1)这才会得到x: Unit 211.72.92.133 10/02 18:41
15F:→ Chikei:还有是assignment "expression"才是unit 211.72.92.133 10/02 18:43
16F:→ Chikei:(var = value)才是unit,不是= 211.72.92.133 10/02 18:44
17F:推 suhorng:val variable = expr 这是 binding, 140.112.16.131 10/02 19:12
18F:→ suhorng:不是 assignment 140.112.16.131 10/02 19:12
19F:→ suhorng:unit **不是** null 140.112.16.131 10/02 19:12
20F:→ mars90226:欸我耍蠢了...抱歉orz 1.171.60.108 10/02 21:06
21F:推 lingcandy:恩恩我懂了 谢谢大家帮忙解惑^_^ 1.164.21.217 10/16 11:07