作者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