Project1
标题: 有关脚本的疑问 [打印本页]
作者: kvkv97 时间: 2014-10-8 14:01
标题: 有关脚本的疑问
本帖最后由 kvkv97 于 2014-10-8 14:32 编辑
1,常量是不变的符号,它是个量,只能赋值,为什么它还可以被定义?常量的作用域是什么?
2,初始化就是第一次赋值吗? 能初始化的是什么(变量还是常量?或者是方法?函数?)?初始化后还可以进行 再赋值吗?
3,函数和方法有什么区别? RUBY语言中的定义是什么?它起什么作用的?
4,声明和定义的区别是什么?
能具体说下吗?谢谢了
5,可以说 函数就是方法,或者说 方法 就是函数 吗?
6,条件分歧和循环是不是函数?
作者: RyanBern 时间: 2014-10-8 14:44
本帖最后由 RyanBern 于 2014-10-8 21:31 编辑
那就通俗地回答一下好了。
1.常量是一种特殊的变量,可以简单地理解为不能改变而固定的量。意思就是说你只能访问它而不能修改它的内容(只读属性)。因此,定义常量的时候必须指明初值,一个常量一旦被定义,就不能再改变它的内容。常量的作用通常是一些固定的参数,这样在参数发生改变时便于统一修改。关于作用域,这个说起来有些麻烦。常量有效的范围是在属于它被定义的层次上,在这以外无效(无法访问)。- CONST1 = 1
- module M
- CONST2 = 1
- class A
- CONST3 = 1
- end
- class B
- def fun
- c = CONST1 #合法
- a = CONST2 # 合法
- b = CONST3 # 非法,CONST3仅在A中有效
- b = A::CONST3 # 合法,利用作用域算符
- end
- end
- end
复制代码 这里有三个常量,CONST1在module M和class A层次上以及module M外面的那个层次上都有效,而CONST2 只在module M和class A上有效。CONST3只在class A内部有效。所以在B类内部访问CONST3非法,如果一定要访问,请利用作用域算符'::'
2.初始化就是使用构造方法initialize,通常在initialize执行的时候会指定初值。所有的对象在被定义的时候都要自动调用构造方法对其进行初始化。初始化后能否赋值取决于变量的性质。如果是常量就不能再次赋值。
3.这两个本质上是差不多的,'函数'是C/C++中的称呼,而'方法'更多用在面向对象的语言中。所以在这里就叫方法吧。现在阶段可以不区分他们。
4.Ruby中基本不需要声明,变量,类,方法可以直接使用,这和C/C++/Java等是不同的。
#include<iostream>
using namespace std;
extern int a;
int main(){
cout << a;
return 0;
}
#include<iostream>
using namespace std;
extern int a;
int main(){
cout << a;
return 0;
}
在CPP中,第三行属于外部变量声明,作用就是相当于通知便是其·编译器有一个叫做'a'的外部变量,它在别处定义。这时变量a已经创建。
public class Test{
public static void main(String[] args){
int[] a;
a = new int[5];
System.out.println("" + a[0]);
}
}
public class Test{
public static void main(String[] args){
int[] a;
a = new int[5];
System.out.println("" + a[0]);
}
}
Java中的对象也必须先声明再定义(实际上是一个空指针对象,没有实体),或者是声明的时候一并定义。
int f(int);
int g(int);
int f(int a){
if (a > 0) return 0;
else return g(a);
}
int g(int a){
if (a <= 0) return 0;
else return f(a);
}
int f(int);
int g(int);
int f(int a){
if (a > 0) return 0;
else return g(a);
}
int g(int a){
if (a <= 0) return 0;
else return f(a);
}
在CPP中函数的声明有时候是为了实现两个函数互相调用。
但是Ruby中,变量使用的时候,无需声明。
5.已经说明,感觉没必要纠结这个事情。
6.条件以及循环不是函数,而是流程控制语句。
作者: myownroc 时间: 2014-10-8 20:40
该说的都被说了,所以就补充一下:
方法可以看做是没有返回值的函数,而函数必须有返回值(当然,如果没写return这类东西,在执行函数的时候也会自动返回一个空值)。
不过,在Ruby中,函数和方法的区别不是那么大……
作者: 喵呜喵5 时间: 2014-10-9 20:56
看到作用域于是过来凑个热闹说说自己最近学习的知识……
三个作用域门:
module、class、def
以及一种特殊的技术:关键词 扁平化作用域
欢迎光临 Project1 (https://rpg.blue/) |
Powered by Discuz! X3.1 |