栈长
<<开始
在上一篇,我们创建完了项目,还有了一行输出!的代码,接下来让我们看看,一些基本的操作,rust和php分别是怎么做的呢。
我们看看那段rust的Hello world的代码在php里是怎么写的呢:
首先来看看定义一个函数/方法,php使用function关键词,而rust使用fn关键词,很明显,fn就是function的简写嘛,这个很容易理解。
然后是println!这个用来输出信息到stdout,我们会发现,咦怎么有一个!感叹号呢??难道是rust的特色吗?
实际上不是的,!在rust里面表示这是一个宏,我们暂且可以把它当成一个特殊的函数。
好,接着我们看看如何定义一个变量:
在php,我们使用$来表示这是一个变量,
再看看rust:
首先,得用let关键词绑定一个变量,这样表示把123绑定到val变量。
众所周知,rust是一个强类型语言,但是在上面的代码里,我们并没有看到有声明类型,看起来与php差不多嘛?
实际上,上述情况里编译器可以自动推断类型,
好了,那么现在我们来把val更改为456:
噢买嘎,为什么会这样子呢?
因为rust的变量是默认不可变的,也就是说,使用
那要怎么改变这个变量呢?很简单,只需要加上mut(Mutable ):
好了,现在可以变了。(快给我变!
跟着,我们的歪歪踢同学表示要把val变量改成他的名字并发出了"草"的声音:
因为我们val绑定了一个i32类型的值,但是歪歪踢同学却把它改成了一个字符串(&str),这是不允许的操作,
编译器娘:明明是数字类型的,渣男你怎么说变就变能改成字符串呢?
歪歪踢同学:那咋办嘛,原来的不想要了,那我们就重新绑定一个!(渣男行为
最后,再说一下函数的参数和返回值:
接受一个类型为i32和一个类型为&str的参数,返回一个i32类型的值。
基本的声明变量,函数等等操作,有什么不同呢?
在上一篇,我们创建完了项目,还有了一行输出!的代码,接下来让我们看看,一些基本的操作,rust和php分别是怎么做的呢。
我们看看那段rust的Hello world的代码在php里是怎么写的呢:
PHP:
function main() {
printf("Hello world!");
}
main(); // 由于php并不是使用main函数来作为入口,我们手动调用main函数假装一下(:razz:
首先来看看定义一个函数/方法,php使用function关键词,而rust使用fn关键词,很明显,fn就是function的简写嘛,这个很容易理解。
然后是println!这个用来输出信息到stdout,我们会发现,咦怎么有一个!感叹号呢??难道是rust的特色吗?
实际上不是的,!在rust里面表示这是一个宏,我们暂且可以把它当成一个特殊的函数。
好,接着我们看看如何定义一个变量:
在php,我们使用$来表示这是一个变量,
PHP:
$val = 123; // 给val变量赋值123
$val = 456; // 把val变量的值更改为456
再看看rust:
代码:
let val = 123;
众所周知,rust是一个强类型语言,但是在上面的代码里,我们并没有看到有声明类型,看起来与php差不多嘛?
实际上,上述情况里编译器可以自动推断类型,
let val = 123;
是等同与let val: i32= 123;
的,: i32;
显式声明了val变量为i32类型。rust跟php的类型区别,请看后续文章(咕~
好了,那么现在我们来把val更改为456:
代码:
let val = 123;
val = 456; // 完蛋,编译时报错了!
噢买嘎,为什么会这样子呢?
因为rust的变量是默认不可变的,也就是说,使用
let val
绑定了一个变量之后,这个变量就不能改变了!!那要怎么改变这个变量呢?很简单,只需要加上mut(Mutable ):
代码:
let mut val = 123;
val = 456;
跟着,我们的歪歪踢同学表示要把val变量改成他的名字并发出了"草"的声音:
代码:
let mut val = 123;
val = "yyt";
歪歪踢同学:那咋办嘛,原来的不想要了,那我们就重新绑定一个!
代码:
let mut val = 123;
let val = "yyt";
最后,再说一下函数的参数和返回值:
代码:
fn test_func(val: i32, s: &str) -> i32 {}