@@ -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