Julia中的单对双引号

alv*_*vas 11 string quotes string-literals julia

朱莉娅的单引号和双引号有什么区别?

与Python不同,对于字符串,它不允许使用单引号:

> s = 'abc'
syntax: invalid character literal
> s = "abc"
> print(s)
abc
Run Code Online (Sandbox Code Playgroud)

但是当试图单引双引号时,允许:

> s = '"'
> print(s)
"
Run Code Online (Sandbox Code Playgroud)

朱莉娅的单引号用途是什么?是否有像Python的PEP这样的文档来解释为什么不使用单引号?

DSM*_*DSM 13

把它想象成C/C++; 单引号生成一个Char,而双引号生成一个String(参见,例如,这里).

julia> c = 'a'
'a'
julia> typeof(c)
Char
julia> s = "a"
"a"
julia> typeof(s)
String
julia> s = "ab"
"ab"
julia> typeof(s)
String
Run Code Online (Sandbox Code Playgroud)

在Python中,我们只使用长度为1的字符串作为字符,但Julia区分它们,所以我们得到了

julia> typeof("abc"[1:1])
String    
julia> typeof("abc"[1])
Char
Run Code Online (Sandbox Code Playgroud)

即使在Python中我们也有

>>> type("abc"[0:1])
<type 'str'>
>>> type("abc"[0])
<type 'str'>
Run Code Online (Sandbox Code Playgroud)