scala专题教程
知识点
相关文章
更多最近更新
更多Scala函数定义与调用
2019-03-23 20:55|来源: 网路
定义一个函数的格式是def 函数名([参数名[:参数类型][,参数名[:参数类型]......]])[:返回类型]{......}
看以下示例:
package com._656463.scala.baisc object HelloScala { def main(args: Array[String]) { //println("hello scala"); sayHello val addVal = add(1,2) println(addVal) } def sayHello(): Unit ={ println("hello") } def add(a:Int,b:Int): Int ={ return a+b; //a+b; } }
如果该函数没有参数,调用的时候可以不加括号,例如sayHello。
方法返回值可以加return,也可以不加,如果不加默认最后一行为返回值,在每条语句最后可以不加;
函数一般都会有返回内容,Unit为空返回值。Unit可以省略。
相关问答
更多-
在SQL中怎样调用自定义函数?[2022-08-29]
在select后跟你的自定义函数就可以。 mysql中用select调用自带的now()函数: mysql> select now(); 然后mysql就会返回当前的时间。 -
scala怎么定义无参构造函数[2022-06-11]
类名后面没有参数就是无参的: class mytest { val i=100 val s="my name" } val m=new mytest 有参数,但是每个参数都有默认值的构造器,也可以看成支持无参的 也可以写一个辅助构造器,是无参的 class mytest2(val x:Int) { val s="my name" def this() = this(100) } val m2 = new mytest2 -
scala怎么定义无参构造函数[2022-08-20]
直接写到类的里面就可以了: scala> class A { | //do anything you want | println("Hi, the construtor invoked here..") | } defined class A scala> val a = new A Hi, the construtor invoked here.. a: A = A@1339a0dc scala> 上面的Scala代码基本等价于下面的Java代码: public class A { public A() ... -
Haskell使用Hindley-Milner类型推理算法,而Scala为了支持面向对象的东西,现在不得不放弃使用它。 为了方便地为所有适用类型编写一个添加功能,您将需要使用Scala 2.8.0: Welcome to Scala version 2.8.0.r18189-b20090702020221 (Java HotSpot(TM) 64-Bit Server VM, Java 1.6.0_15). Type in expressions to have them evaluated. Type : ...
-
您没有通过该方法,而是调用该方法,然后将其结果传递给该调用。 如果你想传递这个方法,你首先必须将它转换成一个函数,然后传递它: functionTakingFunction(TestObj1.testMethod _) 这里testMethod被转换成部分应用函数(被称为“绑定”)。 你必须这样做的原因是因为TestObj1.testMethod不计算为function0 (这是什么需要传递给functionTakingFunction ),而是因为声明的方式(没有括号)而导致String 。 它适用于T ...
-
Scala函数调用(Scala function call)[2022-01-20]
这是用“ Pimp my library ” 技术完成的 。 要将不存在的方法添加到类中,可以定义一个隐式方法,将该类的对象转换为具有以下方法的类的对象: class Units(i: Int) { def millis = i } implicit def toUnits(i: Int) = new Units(i) class Specs(s: String) { def in(thunk: => Unit) = thunk } implicit def toSpecs(s: Strin ... -
def sum(x: Int, y: Int): Int = { x+y }这是一个带参数,返回类型和函数体的函数定义 这不是函数定义。 这是一个方法定义。 功能和方法根本不同。 函数是对象,方法不是。 (方法属于对象。)方法可以是多态的,函数不能。 val sum = (x: Int, y: Int) => { x+y }这看起来像是一个lambda函数赋值给变量,为什么返回类型永远不会在这里定义? 你是在问为什么没有声明sum的类型,或者为什么没有声明函数文字的返回类型? 函数文字的返回类型未声明,因为 ...
-
Scala不是一种纯粹的函数式语言,因此如果没有效果系统,它就不能知道factorial是纯粹的(例如,它不会“知道”关于大整数乘法的任何事情)。 您需要在此处添加自己的memoization方法。 大多数情况下,只需在循环外添加val f300 = factorial(300) 。 这是关于memoization的问题 。 Scala is not a purely functional language, so without an effect system it cannot know that f ...
-
-
不。(一般情况下) 它说
的原因是因为没有给出函数的良好字符串表示,所以我们只说它是一个带有一个参数的函数。 你无法获得函数定义的原因是因为编译了Scala。 你的函数的JVM字节码已经相当难以理解了(当然是我的评论) aload_1 // Load the second argument (of reference type) onto the stack (the first is this function object) checkcast #mm / ...