2019独角兽企业重金招聘Python工程师标准>>>
这些错误让我付出了很多时间去解决:
# SubString
使用字符串区间获取的字符串,是一种特殊的类型:SubString
rest_str = str[1:end]
chop_str = str[2:end]
这种类型同 String 不同,函数参数如果设置成 String, 传入一个 SubString 的类型,就会报错。
当然,Julia 的函数可以不声明类型,这样就不会出现这种问题,这个问题被深深的隐藏起来, 以至于上网搜索都没有找到答案。
strip 也会产生 SubString
解决的办法就是,所有这些表达式前面加 String()
function trim(str::String)::String
return String(strip(str))
end
function rest(str::String)::String
return String(str[2:end])
end
# r"str" 会按照正则表达式规则去编译
为了能获取一种不会对 '$' 字符转义的字符串表达形式,我开始选择了 r"str" 的形式,但系统提示我编译出错,我才明白,这种形式的字符串是正则表达式专用,别的还用不了。于是用 raw"…" 形式代替。
# """…""" 会对中间的 '$' 字符进行特殊处理。
这和大多数语言不同,这让我不得不用 raw"…" 来标记跨行长字符串。
# 1.0 和以前的版本差别较大
以前声明结构用 type 关键字,现在不行了,必须这么用:
mutable struct Foo
off::Int
text::String
end
如果不用开始的 mutable 那么这个结构是不能修改的,但不能修改的结构,似乎没什么用。
# typealias 没有了
现在这么用:
Str = String
Table = Dict{String,String}
# Vector 就是一维数组
文档里到处出现这个词,一直不明白是啥数据类型,最后明白了。
# 不要尝试去自己编译 Julia 的二进制文件,太麻烦了
直接从网站上下载二进制包,然后解压使用:
ubuntu 默认安装的是 0.45 版本,升级 repo 后,变成了 0.54.
# 字符数组转换成字符串用 String,不能用 string
string 看似功能强大,但处理 Char[] 数组就会变成别的样子。
# is_file => isfile, readstring => read