您的位置:首页 > 其它

scala初学之helloWorld

2017-12-01 14:21 176 查看
  特此声明,本文中的代码 部分或全部来源王家林的scala教程;虽然王家林一直被大家所诟病,而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的,他只是拿过来翻译一次,看他的视频也是能了解一些东西的;但是很多东西讲的确实欠缺;所以在学习的过程中把自己的很多思考注释到了他的代码中。一是当作自己的备忘,二也希望能够给大家带来一些些的帮助。也希望自己能把一百多集20分钟左右的视频都看完,思考完,并有所标注。

 进入正文:

 /*首先认识了object前缀,知道它的作用之一就是所有的main方法都必须放在object中*/
object HelloScala {

/*def 在scala中用来定义一个函数
* 在object中定义的方法可以分成下面几种情况
* 首先他们有一个共同的特点就是在scala的object中所有的方法都是静态的(可以通过Oject.xxx来调用),对应与java的static
* 下面说对应的几种情况
* 1. def xxx = {} 在object中对应与java的 public static 返回值 xxx(Type value){}
* 返回值在scala中可以省略,参数没有的话括号和参数都可以省略,一会说main方法的时候会看到一个方法的完整样子。(scala的难处就在于好多好多的地方可以省略··简写)
* 同时在scala中没有public关键字,在java中什么修饰符也不加也就是没有(public 。 protected 。 private)的话默认是包内可以访问的,所以包内访问怎么办?
* 别急scala也有提供办法,往下看
* 2. private def xxx ={} 私有方法
* 3. protected def xxx={} 在子类中可以访问
* 4. private[包] / protected[包] 首先指明了方法是私有的还是子类可访问的,然后又明确了这个方法在哪个包中能访问
* 5. scala还有一个独特的对象限制 格式为 private[this]/protected[this] 这样指明以后,就只能在本对象中访问,后面再细说
* 6. 对于默认的public,都public了所以就不用在加什么包限制和对象限制了
*
* */

/*再看看函数体本身,
* main(args:Array[String}):Unit={...}
* void mian(String[] args){}
* 和java的不同有
* 1.函数签名和花括号之间多了个等号 如果你的花括号中只有一句话 那么花括号也可以省略 例如 def test(name:String):Unit=println(name)
* 2.void 变成了 :Unit :Unit可以省略 例如 def test(name:String)=println(name)
* 3. String[] args 变成了 args:Array[String] 如果没有参数···那么这样也是对的 def test = println()
* 4. 函数内的语句后面不用加;了···能少敲一个是一个的思想··
* 5. 想返回值的话也不用写return了 直接写值就好 例如 返回5的函数
*
* def test = 5
* def test():Int = 5
* def test:Int = 5
*
* 都是正确的
*
* 从上面的三点可以得出的感觉是什么
* 1.在scala中要说明一个变量的类型 那么用 xx:Type的方式来指定
* 那么为什么在函数签名后面也是:返回值 呢?
* 这里明确一下我理解的变量类型。所谓的变量类型,就是你用一个什么样的声明来接受一个变量
* 这么说 也就是 你定一个了一个double类型的变量,那么只有在声明为double的才能接收这个变量
* 扩展到函数 :返回值 我们也理解为定义了函数的类型 其实也就是你用什么样的声明来接受这个函数的返回值
* 所以 函数===变量 所以他们都用 :Type 了,所以scala是函数式编程语言
*
* */

def main(args: Array[String]): Unit = {
println("Hello Scala!!!A new world!!!")
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: