美文网首页首页投稿(暂停使用,暂停投稿)技术文程序员
使用占位符参数的函数应该只有单条语句

使用占位符参数的函数应该只有单条语句

作者: 浑身演技 | 来源:发表于2016-07-22 09:53 被阅读85次

以下代码段的执行结果将会是?

List(1,2).map { i => i + 1 }
List(1,2).map { i => println("Hi"); i + 1 }
List(1,2).map { _ + 1 }
List(1,2).map { println("Hi"); _ + 1 }

选项
A. 输出

List[Int] = List(2, 3)
Hi
List[Int] = List(2, 3)
List[Int] = List(2, 3)
Hi
List[Int] = List(2, 3)

B.输出

List[Int] = List(2, 3)
Hi
Hi
List[Int] = List(2, 3)
List[Int] = List(2, 3)
Hi
Hi
List[Int] = List(2, 3)

C.输出

List[Int] = List(2, 3)
Hi
Hi
List[Int] = List(2, 3)
List[Int] = List(2, 3)
Hi
List[Int] = List(2, 3)

D.第一,二,三语句输出 ,第四语句编译失败

List[Int] = List(2, 3)
Hi
Hi
List[Int] = List(2, 3)
List[Int] = List(2, 3)

答案: C
解释:
map函数期望传入一个函数,因此代码块从本质上来说将会被构造成一个函数。在占位符表达式中,最后一条语句将会被构造成一个函数,其他的语句将会在构造函数的过程中执行一次。
举例来说:

map { println("hi"); _ + 1 }  // 将会选择 Int => Int 作为结果函数
map { i => println("hi"); i+1 } //此处已经定义好结果函数

由此占位符看起来一样,但在第二个拥有占位符语句里面却有不同的效果。从上面print语句不再是函数体的一部分了,而是构造函数的一部分。

此题翻译自 Hi There!

相关文章

  • 使用占位符参数的函数应该只有单条语句

    以下代码段的执行结果将会是? 选项A. 输出 B.输出 C.输出 D.第一,二,三语句输出 ,第四语句编译失败 答...

  • SQLite3 执行 sql 语句的占位符

    使用 execute 方法执行一条SQL语句,如果带有参数可以使用占位符来传递参数。使用占位符已经考虑到转码的问...

  • ES6——箭头函数学习笔记

    箭头函数的参数使用()包含,如果只有一个参数则可以省略(), 箭头函数的代码段使用{}包含,如果只有一条返回语句,...

  • 在Hibernate5中HQL查询使用"?"

    参考博文: 关于在Hibernate5.3.1中HQL语句使用"?"参数占位符运行报错的问题

  • 操作FMDB执行sql语句遇到carsh现象

    在操作FMDB插入的时候,如果遇到了carsh,需要检查sql语句中是否使用了?占位符 (不确定的参数用?来占位)...

  • 函数

    函数的定义: 函数是一段具有特定功能的可重用的语句组 函数定义时,所指定的参数是一种占位符 函数定义后,如果不...

  • 泛型的意思

    在上面的泛型函数例子中,占位符T是类型参数的一个例子。类型参数指定并命名一个占位符类型,并用<>包裹,放在函数名后...

  • swift泛型基础使用

    关于泛型的一点理解 泛型在实际使用中,实际上就是一个占位符,只要能够作为函数参数使用的类型都可以用作占位符。如cl...

  • JAVA 代码调用Jmeter (动态配置请求参数)

    一、Jmeter如何进行动态设置请求参数 Jmeter使用占位符的方式进行动态替换请求参数内容。 那么替换占位符的...

  • Hibernate(2)-查询

    1、 使用Query接口 Hql 条件查询 hql与sql语句对比及查询步骤 查询全部 条件查询>索引占位符 条...

网友评论

    本文标题:使用占位符参数的函数应该只有单条语句

    本文链接:https://www.haomeiwen.com/subject/ojcijttx.html