Julia Lang 容易犯的错误

2019独角兽企业重金招聘Python工程师标准>>> hot3.png

这些错误让我付出了很多时间去解决:

# 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

转载于:https://my.oschina.net/u/563463/blog/1930197

你可能感兴趣的:(Julia Lang 容易犯的错误)