Latest web development tutorials

การเรียกใช้ฟังก์ชันสกาล่าโดยใช้ชื่อ

ฟังก์ชั่นสกาล่า ฟังก์ชั่นสกาล่า

ล่ามสกาล่าในสองวิธีพารามิเตอร์ฟังก์ชั่นการวิเคราะห์ (อาร์กิวเมนต์ของฟังก์ชัน) เมื่อ:

  • สำหรับการโทร (โทรโดยค่า): ค่าของพารามิเตอร์การแสดงออกที่มีการคำนวณก่อนแล้วจึงนำไปใช้กับฟังก์ชั่นภายใน
  • โดยการเรียกชื่อ (เรียกโดยชื่อ): การแสดงออกพารามิเตอร์ไม่ได้ผลโดยตรงกับการคำนวณของฟังก์ชั่นภายใน

ก่อนจะเข้าสู่ภายในฟังก์ชั่นที่เรียกว่าโดยค่าได้รับการคำนวณมูลค่าของการแสดงออกพารามิเตอร์และเรียกชื่อโดยการแสดงออกอาร์กิวเมนต์เป็นค่าที่คำนวณได้ภายในฟังก์ชั่น

นี้ทำให้เกิดปรากฏการณ์ที่เรียกตามชื่อแต่ละเมื่อล่ามจะถูกคำนวณครั้งเดียวคุ้มค่าของการแสดงออกในการใช้

object Test {
   def main(args: Array[String]) {
        delayed(time());
   }

   def time() = {
      println("获取时间,单位为纳秒")
      System.nanoTime
   }
   def delayed( t: => Long ) = {
      println("在 delayed 方法内")
      println("参数: " + t)
      t
   }
}

ตัวอย่างข้างต้นเราประกาศวิธีการล่าช้าเรียกตามชื่อที่จะตั้งชื่อตัวแปรและพิมพ์โดยใช้ = สัญลักษณ์> การดำเนินงานของโค้ดข้างต้นออกผลมีดังนี้:

$ scalac Test.scala 
$ scala Test
在 delayed 方法内
获取时间,单位为纳秒
参数: 241550840475831
获取时间,单位为纳秒

ตัวอย่างของวิธีการที่จะพิมพ์ข้อมูลล่าช้าแสดงให้เห็นวิธีการวิธีการพิมพ์แล้วล่าช้าค่าที่ได้รับและในที่สุดก็กลับไป T

ฟังก์ชั่นสกาล่า ฟังก์ชั่นสกาล่า