• 小白的Android之旅
    2019-05-24
    练习题一按照Lambda最多有22个参数所说,应该需要自己在java中定义Function23,但在最新的Kotlin 1.3版本可以正常运行,应该像前面一位朋友所说的在新版本中没有了这个限制。
    
     4
  • null
    2018-07-14
    可以简单理解 Unit 为 java 的 void 么,老师

    作者回复: java有个Void类不知道你清楚不,其实就可以可以将Unit理解为kotlin的Void类

    
     1
  • 小白的Android之旅
    2019-05-24
    Lambda表达式真是天使与恶魔于一身,初看起来好难理解。如果Lambda是函数的最后⼀个参数,可以将⼤括号放在⼩括号外⾯ ,inline只用来修饰高阶函数,function = { runnable.run() }。
    
    
  • 芋头
    2019-01-30
    老师,定义一个 Runnable 可以这样
    var runnable2 = Runnable {
            println("runable up ")
        }

    那定义一个Callable<V>该如何定义呢
    展开

    作者回复: val callable = Callable<Int> {...}

    
    
  • 小美
    2018-12-15
    fun onlyIf(isDebug : Boolean , block:() -> Unit) {
        if (isDebug){
            block()
        }
    }
    和

    fun onlyIf(isDebug : Boolean , block:() -> Unit) {
        if (isDebug){
            block // 区别点
        }
    }

    张老师 这两个啥区别方便指导下吗?上面那个是调用,下面这个为啥编译器不报错方便解释下吗
    展开

    作者回复: 下面那个相当于你就写了个变量名,但这个变量没有任何意义。

    
    
  • 小美
    2018-12-15
    var runnable = {
            println("demo up ")
        }

    和
     var runnable2 = Runnable {
            println("runable up ")
        }
    有啥区别 ,方便老师稍微指导下吗
    展开

    作者回复: 上面是lambda对象,下面是runnable对象

    
    
  • OzoraTsubasa
    2018-11-12
    练习一的选择题 按我的猜想应该是报错的,因为之前视频说过参数只能支持22个,现在为什么这个是23个也OK那

    作者回复: 因为可以手动创建一个名叫Function23的接口

    
    
  • 欢喜哥
    2018-08-08
    fun only(isDebug: Boolean, block2: (a: Int, b: Int) -> Int): Int {
    if (isDebug) {
    return block2(3, 5)
    }
    return 0
    }
    调用
    val result = only(true, { a, b -> a + b })
    println("result--" + result)

    老师这个是我定义和调用的高阶函数,为什么定义的时候就要block2写固定值,然后外面传入{a,b->a+b}
     ,参数不是应该从外面传入吗?请教老师这是为什么?
    展开

    作者回复: (a:Int, b:Int)->Int 这是一个类型,跟你经常写的String、Int是同类型的。传入的时候{a,b-> a+b} 这一整段是一个对象

    
    
  • wendraw
    2018-07-11
    完全没听懂,老师你能不能讲详细点,高阶函数一笔带过,比如调用高阶函数时,传入lambda表达式写在外面,真的不太好理解,总觉的很别扭,老师能不能解释一下kotlin为什么要这样设计?

    作者回复: 高阶函数是kotlin非常核心的知识点,第一篇快速上手中,我们需要知道高阶函数的语法知识,如何声明,如何调用,能看懂别人代码。在后面讲DSL时候,我们还会重点讲kotlin的lambda与运算符重载知识。
    在这里也教其他没有函数式编程经验的同学一个小技巧,在看kotlin的lambda时,在脑海里默念一下,这是一个接口对象。把lambda作为参数传入到函数中就跟平时写的回调是一样的。

    
    
我们在线,来聊聊吧