Skip to content

Commit ea1961b

Browse files
committed
yield
1 parent 40a3e15 commit ea1961b

1 file changed

Lines changed: 38 additions & 0 deletions

File tree

src/cn/edu/jxnu/scala/basic/basicAndInfo.scala

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -124,6 +124,7 @@ package object basic {
124124
* Scala 访问修饰符基本和Java的一样,分别有:private,protected,public。
125125
* 如果没有指定访问修饰符符,默认情况下,Scala 对象的访问级别都是 public。
126126
* Scala 中的 private 限定符,比 Java 更严格,在嵌套类情况下,外层类不能访问被嵌套类的私有成员。(内部可以访问外层的私有,不如内部/层就没意义了。。。)
127+
*
127128
* @see ObjectsAndClasses.scala->OutPrivateClass.scala | TestInnerPrivateClass.scala
128129
**/
129130

@@ -163,6 +164,8 @@ package object basic {
163164
* }
164165
* 如果函数没有返回值,可以返回为 Unit,这个类似于 Java 的 void,return可以省略,默认返回最后一个表达式(计算)的值,
165166
* 返回为空的称作过程,我们只是使用它的副作用,如打印
167+
*
168+
* 函数内部定义的函数只能在当前作用域被访问,且可以使用外部函数的参数,内部函数可以用于替代private函数【方法是特殊的属于对象成员的函数】
166169
* */
167170

168171
/** 6、函数调用 @see Test3.scala
@@ -243,6 +246,10 @@ object Test2 extends App {
243246
"world"; //+操作符放在末尾,而不是java那样推荐在前面
244247
Console println str
245248

249+
println {
250+
"hello"
251+
} //只有一个参数的方法调用可以使用花括号
252+
246253

247254
// string.chars().anyMatch((int ch)-> Character.isUpperCase((char)ch)) //java 8
248255
}
@@ -376,3 +383,34 @@ object Test8 extends App {
376383

377384
}
378385

386+
/**
387+
* P138 例子
388+
*
389+
* 函数式输出乘法表
390+
*/
391+
object PrintMultiTable extends App {
392+
393+
val ret = multiTable()
394+
395+
println {
396+
ret
397+
}
398+
399+
400+
def makeRowSeq(row: Int) =
401+
for (col <- 1 to 10) yield {
402+
val prod = (row * col).toString
403+
val padding = " " * (4 - prod.length)
404+
padding + prod
405+
}
406+
407+
def makeRow(row: Int) = makeRowSeq(row).mkString
408+
409+
def multiTable() = {
410+
val tableSqe = for (row <- 1 to 10) yield makeRow(row)
411+
412+
tableSqe.mkString("\n")
413+
}
414+
415+
}
416+

0 commit comments

Comments
 (0)