scala初学之helloWorld

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

 

 进入正文:

 

/*首先认识了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!!!")}}

 

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/569218.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

scala初学之函数定义、流程控制、异常处理入门

特此声明,本文中的代码 部分或全部来源王家林的scala教程;虽然王家林一直被大家所诟病,而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的,他只是拿过来翻译一次,看他的视频也是能…

HGOI20190707 题解

Problem A 钢铁侠的诞生 现在有$n$个数字$a_i \leq 10^9 $,然后取出$m$个数字,保证合法。 从小到大输出剩余的$n-m$个数字。 对于100%的数据$m\leq n \leq 3\times 10^5$ Sol : 直接map映射然后用iterator来遍历整个map输出答案即可。 复杂度大概是$O(n…

scala初学之Tuple、Array、Map、文件操作入门实战

特此声明,本文中的代码 部分或全部来源王家林的scala教程;虽然王家林一直被大家所诟病,而且也无法确定这些scala的程序代码是不是他的。但是作为一个初学者觉得就算代码不是他的,他只是拿过来翻译一次,看他的视频也是能…

Java连载3-编译与运行阶段详解JRE,JDK,JVM关系

一、 1.JDK下载地址:https://www.oracle.com/technetwork/java/javase/downloads/jdk12-downloads-5295953.html 二、Java的加载与执行 1.Java程序运行包括: (1)编译阶段:检查Java源程序是否符合Java语法,符…

KMP算法NEXT数组纯手工生成

用一个实际的例子来说明,经历了看懂,看不懂,看懂,看不懂,看懂...后我终于决定把它记下来了。 例子字符串为:abaabaca 首先可以肯定,第一个位置永远位0,第二个位置永远为1.那么可以…

P1078 文化之旅

题面 这题好像是初二时老师讲过的一道题,但是。。我没听??反正没交过就对了。。 我本来想的是深搜spfa,写到50行实现不了??果断看tj,floyd???(黑人…

KMP算法中NEXT数组的作用以及代码实现

在http://blog.csdn.net/u012613903/article/details/79004094中写到了如何手工去求一个NEXT数组,这个在很多考试中可以用来解题。但是在实际的使用中,NEXT数组究竟发挥着什么样的作用,如何用代码实现KMP算法呢? KMP算法是用来确…

最长公共连续子串

给出两个字符串(可能包含空格),找出其中最长的公共连续子串,输出其长度。 注意这里是找连续子串。 算法:动态规划。f[i][j]表示第一个字符串前i个字符中与第二个字符串前j个中的最长连续子串长度 那么状态转移为:当s1(i)s2(j)时&a…

求最长回文串-从动态规划到马拉车之路(上)

要解决的问题: 给定一个字符串,要求求出这个字符串中的最长的回文串子串。 例子: cbddba的最长回文子串为 bddb cbdedba的最长回文子串为dbedb 由上面的例子可以看到,在考虑回文子串的问题时需要考虑奇偶性。因为奇回文关于中…

为什么Python中称__lt__、__gt__等为“富比较”方法

Python中基类object提供了一系列可以用于实现同类对象进行“比较”的方法,可以用于同类对象的不同实例进行比较,包括__lt__、__gt__、__le__、__ge__、__eq__和__ne__六个方法。 那么为什么叫“富比较”(“rich comparison”)方法呢?查了相关…

求最长回文串-从动态规划到马拉车之路(下)

预备知识&#xff1a; &#xff08;1&#xff09;在一个数轴上有两点i和j&#xff08;i<j&#xff09;关于点m对称&#xff0c;那么有 i 2m-j&#xff1b; 证明&#xff1a; 因为 i<j 且 i 和 j 关于 m 对称&#xff0c;那么有 &#xff08;i j&#xff09;/ 2 m 所…

项目管理实战之团队管理 (转自:zhuweisky)

一个系统不仅需要优秀的分析和设计&#xff0c;更需要一个良好的过程将其从蓝图转化为实现。这个过程中最重要的是对团队的管理&#xff0c;也就是人的管理。一个优秀的团队和一个糟糕的团队的效能是天壤之别&#xff0c;她们之间的比例不是1:100或1:1000这样量化的数字能够表示…

python3 内置方法

# -*- coding:utf-8 -*- # Author: Evan Mi import functools # 取绝对值 print(abs:, abs(-1)) # 如果一个可迭代对象的所有元素都为真&#xff0c;返回true ;空也返回真 print(all:, all([1, 0, -3])) # 有一个为真就全为真 print(any:, any([1, 0, -1])) # 变成可打印的字符…

JS 职责链模式

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title></title></head><script>/*职责链模式 所有对象依次处理请求&#xff0c;1不能处理传给2&#xff0c;2不能处理传给3....*//*场景 打折 100以下不打折&…

python3字符串常用操作

# -*- coding:utf-8 -*- # Author: Evan Miname "my name is alex"print(name.capitalize()) # 首字母大写 print(name.count("a")) # 统计整个字符中a的个数 print(aaaaa.count("a", 0, len(aaaaa)-1)) # 前闭后开 print(name.center(50, &…

通过NGINX location实现一个域名访问多个项目

location ~ \.php$ {   root /home/webroot; //此目录下有多个项目 project1 &#xff0c;project2...   fastcgi_pass $php_upstream;   fastcgi_index index.php;   include fastcgi.conf; } location ~/project1 {   index index.php;   fastcgi_pass $php_u…

python3 set相关操作

# -*- coding:utf-8 -*- # Author: Evan Mi# 创建一个set list_1 [1, 3, 5, 7, 3, 6, 7, 9] list_1 set(list_1) list_2 set([2, 6, 0, 66, 22, 8, 4]) print(list_1, type(list_1))# 交集 print(list_1.intersection(list_2)) print(list_1 & list_2) # 并集 print(lis…

JDK环境变量

下载打开如下链接&#xff1a;http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html &#xff0c;进入JDK1.8下载官网&#xff0c;或者直接百度JDK1.8&#xff0c;也可进入下载官网。 进入官网后&#xff0c;按照所给信息下载对应系统版本的J…

python3字典相关方法

# -*- coding:utf-8 -*- # Author: Evan Miinfo {stu1101: TengLan Wu,stu1102: LongZe Luola,stu1103: XiaoZe Maliya } # 字典是无序的 print(info) print(info[stu1101]) # 不存在会报错 print(info.get(stu1101)) # 不存在返回None print(stu1103 in info) # 判断是否…

Shadow Defender 语言文件并注册

:: ::关闭回显 echo off ::设置标题 title 覆盖 Shadow Defender 语言文件并注册:: ::获取管理员权限 set "_FilePath%~f0" set "_FileDir%~dp0" setlocal EnableExtensions EnableDelayedExpansion fltmc >nul 2>&1 || (echo Set UAC CreateOb…