1. 程式人生 > >scala自學日記(5)-scala方法的定義方式

scala自學日記(5)-scala方法的定義方式

初次 接觸到scala發現scala定義方法的方式和java有很大的區別

1.下面是我寫的一個測試scala方法定義的demo.

package com.scala.demo


object FunctionDemo {
   //定義方法1
  def function1()
  {
    println("function1 run!")
  }
   // 定義方法2,效果和function1是一樣的,可見Unit的作用void
  def function2():Unit=
  {
    println("function2 run!")
  }
   //定義方法3
  def fcunction3(a:Int,b:Int):Int ={  //=不可去掉
    a+b
  }
  /**
   * function4主要是測試=是否什麼時候是必須的
   */
  def function4()=
  {
    println("function4 run!")
  }
  def function5():Int=
  {
    2+5
  }
  def function6(a:Int,b:Int)=
  {
    val s=a+b
    println("function6:"+s);
  }
  //定義一個引數,覺得是static 型別的
  val staticfunction=  
  {
    println("staticfunction run!")
  }
  val value1=
  {
    1+2+3
  }
  val value2=
  {
    val a=1+2+3
    val b=a+2
  }
  val value3=2+3+4
  
  def main(args:Array[String])
  {
   function1
   function2
   println("function3:"+ fcunction3(1,2))
   function4
   println("function5:"+function5)
   val f1=function6 _
   f1(1,2)
   staticfunction  //發現無法執行,因為staticfunction是一個引數
   println("staticfunction:"+staticfunction)  //輸出:(),相對於null
   println(value1+";"+value2+";"+value3) //value2=null
  }
}
執行的結果為:
staticfunction run!
function1 run!
function2 run!
function3:3
function4 run!
function5:7
function6:3
staticfunction:()
6;();9

通過上面的輸出結果可以發現:

1.把方法賦值給一個引數的話,這個方法會在引數編譯的時候就執行,相當於該引數是一個static型別的.當然scala裡面是沒有static型別的.

2.當有返回值的時候,定義的時候"="是不能省略的,沒有返回值的時候,無論有沒有引數"="都是可以省略的,例如function6,然而function6的呼叫方式應該怎麼寫,我只想到了如上寫法,求大神指點

3.初始化引數的時候可以加{}

匿名方法的定義方式

匿名方法

例如:args.

args.foreach((arg: String) => println(arg))
其中args是陣列

scala方法的定義就介紹到這裡,下一章我們介紹下陣列的初始化以及遍歷的方法

相關推薦

scala自學日記(5)-scala方法定義方式

初次 接觸到scala發現scala定義方法的方式和java有很大的區別 1.下面是我寫的一個測試scala方法定義的demo. package com.scala.demo object FunctionDemo {    //定義方法1   def functio

scala自學日記(2)-使用Scala直譯器(interpreter)

上一篇裡面我們介紹瞭如何安裝scala以及如何的配置環境變數 接下來我們就介紹下如何使用直譯器來編寫簡單的scala程式碼 開啟控制檯,進入scala開發模式: [email protected]:~$ scala Welcome to Scala versio

scala自學日記(6)-陣列的初始化以及迴圈

1.scala裡面的陣列和java裡面的比較類似,但是又有些不同,陣列的初始化方法比java裡面多了一種方式,具體如下: 程式碼如下: package com.scala.demo /** * 這裡主要介紹陣列的使用 */ object ArrayDemo2 {

scala使用一個需傳入自定義函式的方法操作攻略

個人感覺學習scala的難道在於匿名函式的是使用,比如拿到一個需要傳入自定義的函式的方式時,老拎不清如何寫自定義函式,先將自己的學習心得分享如下: 舉例說明: 對sparkStreaming Dstream中的資料進行處理:1.使用foreachRdd函式得到rdd, 2.使用rdd的for

Scala集合特質繼承體系、定義方法與主要實現類詳解

目錄 一. 架構 二. Traversable 三. Iterable 1. Seq 1.1 緩衝器 2. Set 2.1 SortedSet 2.2 Bitset 3. Map 3.1 ListMap 四. 不可變Seq實體類 1. Lis

Scala方法定義方法和函式的區別,將方法轉換成函式

1. 定義方法和函式 1.1. 定義方法 方法的返回值型別可以不寫,編譯器可以自動推斷出來,但是對於遞迴函式,必須指定返回型別 1.2. 定義函式 1.3.方法和函式的區

定義get/set方法快捷方式

blog height eight 方式 src alt getter setter 點擊 定義get/set方法可以通過鼠標進行完成,這裏有一個簡單的通過編輯器默認生成getter/setter,編輯器會生成默認生成get/set方法 第一步:右鍵鼠標,如圖所示選擇 第

scala 基礎十二 scala apply的使用,工廠方法和單例模式的實現

定義 其他 返回 pack 新的 true 伴生對象 args null 1. apply 可以用來實現類似於靜態的初始化類的實例,請看下面實例 package smart.iot class applyclass { } class A {

Python中類方法定義及常用的實現方式

1. python類的屬性和方法檢視 class Person_1: mind = '有思想' belif = '有信仰' animal = '高階動物' def tt(): pass print(Person_1.__dict_

Servlet介面定義5方法介紹

Servlet介面定義了5種方法 init() service() destroy() getServletConfig() getServletInfo() import java.i

簡單理解scala集合上常用的方法

集合上常用的方法 map 1.對映:對集合中的每一個元素進行執行某一項操作 2.返回值型別,正常情況不變,原來集合是什麼型別,就返回什麼型別 3.元素型別,根據我們函式的返回值型別 val f = (x: Int) => x * 10 val arr: A

5方法定義與使用

方法的定義與使用 方法的基本概念 方法就是一段可重複使用的程式碼塊。所以當要反覆執行一段程式碼時,可考慮將這段程式碼定義為方法。本章中的方法指的是定義在主類中,由主方法直接呼叫的方法。此類方法的語法: public static 返回值型別 method_name(

IntelliJ IDEA 中 右鍵新建(new)時,選項沒有scala(java) class的解決方法和具體解釋

首先註明:本文不是原創,我也是在網上找了好久,找到這篇博文(連結),解決了我的問題,順便在這裡總結一下,給有需要的人。 專案是用Maven 建立的,具體的建立過程就不做解釋了。出現的問題如下:  具體問題的圖,如下: 開啟設定介面的路徑如下: 主介面File——&

scala的apply和unapply方法

當scala中類或者物件有一個主要用途的時候,apply方法就是一個很好地語法糖。 請看下面一個簡單的例子: class Foo(foo: String) { } object Foo { def apply(foo: String) : Foo =

scala 入門(5

2015-05-28 周海漢 2015.5.29 0點 scala mixin模式續 上一篇文章用水果為例,滿足了老闆用禮儀專家給的建議,給每種水果貼上是否送禮的標籤。 但水果怎麼吃,一些不產水果的地方的人可能不知道。因此

Scala學習筆記5 (集合 Collections)

5.util包 5.1.架構 The following figure shows all collections in package scala.collection. These are all high-level abstract class

Mysql學習(三)Spark(Scala)寫入Mysql的兩種方式

package total import org.apache.spark.sql.{DataFrame, Row, SQLContext, SparkSession} import org.apache.spark.{SparkConf, SparkContext} imp

C++初學例程5---類的定義和類中方法定義及呼叫

 void Set_weight(int w);//這裡只是對函式的宣告 還沒有實際的定義        //方法的首字母也大寫  //如何在 類的外部定義類中的方法  void Get_height()  {   cout<<"height = "<<height<<"

IDEA建立scala專案的三種方法

轉自  https://blog.csdn.net/u013850277/article/details/78526046 用了好幾年的Eclipse,最近想著瞭解下Scala,聽說Intelli JDEA這個工具很強大,因而開始著手試試 Intelli JDEA,下面是運

Scala Functions vs Methods(scala中的函式和方法

被牆的文章,轉過來一下。 Scala has both functions and methods. Most of the time we can ignore this distinction, but sometimes we have to deal with th