0

コンパイラ バージョン 2.10.0 および 2.10.1 で Scala7-M9 および json4s 3.0.1 を使用すると、コンパイラの問題が発生します。

JSON 解析コードの短いスニペットをコンパイルすると、次のコンパイラ エラーが発生します。

[error] JSON.scala:25: erroneous or inaccessible type
[error]                 JArray(children) <- json \ "children"
[error]                                          ^

このコードから:

import scalaz._                                                                 
import Scalaz._                                                                 

import org.json4s._                                                             
import org.json4s.native.JsonMethods._                                          

object JSON {                                                                   

    def main(args: Array[String]) = {                                           
        val json = parse("""                                                    
            {   "name": "joe",                                                  
                "children": [                                                   
                    {                                                           
                        "name": "Mary",                                         
                        "age": 5                                                
                    },                                                          
                    {                                                           
                        "name": "Mazy",                                         
                        "age": 3                                                
                    }]                                                          
            } """)                                                              

        val names = for {                                                       
                JArray(children) <- json \ "children"                           
                JObject(child) <- children                                      
                JField("name", JString(name)) <- child                          
             } yield(name)                                                       

        println("Names: " + names)                                              
     }                                                                           
 }

インポートを次のように変更します。

 import scalaz.{Scalaz, \/}                                                                    
 import Scalaz.ToIdOps._

(私の実際のプロジェクトでは、検証のために / モナドだけが必要です)問題を修正します。

Scalaz/コンパイラの世界の誰かが、scalaz 名前空間全体をインポートしたときに何がコンパイラ エラーを引き起こしているのか、またそれがバグであるかどうか、報告する必要があるかどうかを考えているかどうか疑問に思っています。

ありがとう。

4

0 に答える 0