我来自Javascript的背景,试图学习一些Kotlin。
我知道我可以通过
来定义我的功能fun add(a: Int , b: Int): Int{
return a+b
}
我正在尝试这个
val add = {
a:Int,b:Int->
println("I am calculating the sale => no body you guy [$x+$y]");
//works
}
val add = { a:Int ,b : Int ->
//How do i return from this function
}
这也是定义Kotlin功能的正确方法吗?和第一种方式有什么区别?
答案 0 :(得分:5)
这也是定义Kotlin功能的正确方法吗?和第一种方式有什么区别?
这甚至不是“定义Kotlin功能的方法”。
在JavaScript中,所有函数都是具体化:它们是您可以从变量引用并传递的第一类值。在Kotlin中并非如此,就像Java,C ++,Objective C等许多其他语言一样。
一个函数只是一个声明,你可以调用它,但你不能直接引用它。单独的语言功能允许您创建委托这些功能的功能对象,并且您可以传递这些对象。
因此,
fun add(a: Int , b: Int): Int {
return a + b
}
是一个函数声明和
val add = {a: Int, b: Int ->
a + b
}
是四件事:
add
(Int, Int) -> Int
add
。该对象有一个方法invoke(a: Int, b: Int): Int
,您在块中给出了它的实现:
fun invoke(a: Int, b: Int): Int {
return a + b
}
您可以明确地调用它:
val result = add.invoke(a, b)
并且Kotlin定义了语法糖,允许您省略显式.invoke
。
答案 1 :(得分:2)
您不需要明确return
那里
val add = { a: Int, b: Int ->
a + b
}
add(2, 3) // => 5
答案 2 :(得分:0)
希望这会奏效。
s.pod_target_xcconfig = { 'SWIFT_OBJC_BRIDGING_HEADER' =>'$(PODS_ROOT)/../SwiftDemo/SwiftDemo-Bridging-Header.h' }
<强>输出强>
V /回复:总和7
答案 3 :(得分:0)
你不能像这样在kotlin中返回值,它会给出类型不匹配的错误,因为你没有声明任何返回类型:
fun add(a: Int , b: Int){
return a+b
} //wrong
我们在kotlin中声明返回类型:
fun add(a: Int , b: Int) : Int{
return a+b
}
其次,
val add = { a:Int ,b : Int ->
}
这不是一个函数,它是一个赋值的声明 在kotlin中,我们通过添加&#34; fun&#34;来声明函数。在您的函数名称之前 //如果需要,可以在&#34; fun&#34;(默认为公开)
之前添加访问修饰符(私有,公共,受保护)fun add (){ //if it returns any value then add ": {datatype}" just right of "()"
//your code here
}
希望它能帮到你:)。