簡體   English   中英

錯誤:在Shell上使用Scala值不是對象的成員

[英]Error: value is not a member of object using Scala on the shell

您好,我有這個scala對象,我想使用帶有scala的外殼在sample函數中運行代碼:

object SampleObject{ 
    def sample(){

         val data = Array(1, 2, 3, 4, 5)
         data.foreach(println(_))
    }
}

我是這個

scala> :load /Users/username/Desktop/Cli.scala 
Loading /Users/username/Desktop/Cli.scala...
defined object SampleObject

但是如果我運行這個

scala> SampleObject.sample

我就是這個

<console>:92: error: value sample is not a member of object SampleObject
   SampleObject.sample

為什么會這樣? 命令:load和-i存在問題,就像您無法訪問對象成員一樣。 有什么建議可以使其正常工作嗎?

UPDATE1:如果我在上面執行的代碼既不執行load也不執行-i,而是直接將其編寫在shell上,則一切正常。

UPDATE2:仍然無法正常工作... 在此處輸入圖片說明

問題在於大括號之前是換行符。 您可以通過以下兩種方法之一解決此問題:

  1. :paste代替:load
  2. 將大括號與對象名稱放在同一行

您最初的問題是object SampleObject{但事實證明它不是您的實際文件所包含的對象,如更新2所示。 因為:load逐行工作,就像解釋器看到您在REPL上鍵入時一樣

object Cli
做到了:這是一個(不是很有趣的)對象的完全有效,完整的Scala聲明。 下一行的左括號將啟動一個新塊,該新塊與您剛定義的對象無關。

這是一個交互式REPL的行為與編譯器不同的區域,它將在括號前使用一個換行符(有關詳細信息,請參見Scala語言規范)。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM