ãŸããåŒçšå ã®ããã°ã©ã ã®ã·ã³ã¿ãã¯ã¹ã·ã¥ã¬ãŒãé€å»ãããšä»¥äžã®ããã«ãªããŸãã
import net.liftweb.json.JsonParser.parse
import net.liftweb.json.JsonAST._
val json_str = """{"a":1,"b":2,"c":3}"""
val list = parse(json_str).filter{
case JObject(_) => true; case _ => false
}.flatMap{
case JObject(child) => child.map{item => (item.values)}
}
list.foreach(println _)
ãã®ãšããitem.valuesã®åã¯(String, item.value.Values)åã«ãªããŸãã(ãã®ããã«ã倿°ã«äŸåããåã
Scalaã§ã¯ãã¹äŸååãšãããŸã)ãflatMap[B]ã®åãã©ã¡ãŒã¿Bãæšè«ããã®ã«itemã䜿çšããããšãã§ããªãã®ã§(
itemã¯ã¹ã³ãŒããæããŠãããã)ãã³ã³ãã€ã©ã¯ãã®ä»£ããã«itemã®åã§ããJFieldã
䜿çšããŠB = (String, JField#value.Values)(JField#value.Valuesã¯ããã°ã©ã äžã§ã¯è¡šèšäžå¯èœãªå)
ãšæšè«ããŠããããã§ãããããŠããã®åãšitem.valuesã®åã§ãã(String, item.value.Values)åãéäºæã§ãã
ãããåãã§ãã«ã«ã¯ããããŠããŸãããã§ããæ£çŽèšã£ãŠèªåããã®èŸºã(ãã¹äŸåå)ã®åäœã¯å®å
šã«çè§£ã§ããŠãªã
ã®ã§ãééã£ãŠããå¯èœæ§ããããŸããâŠã
ãšãããããç°¡åãªå¯ŸçãšããŠã¯ãitems.valueã(String, JValue#Values)åã«ã¢ãããã£ã¹ãããŠä»¥äžã®ããã«
ããŠãããšã³ã³ãã€ã«ãéãããã«ãªããŸãã
# æ£çŽãªãšãããJField#Valuesã®åã(String, value.Values)ãã
# (String, JValue#Values)ã«å€æŽããŠããããã°ããããäžçªè¯ããããªæ°ãããŠããŸããâŠ
import net.liftweb.json.JsonParser.parse
import net.liftweb.json.JsonAST._
val json_str = """{"a":1,"b":2,"c":3}"""
val list = for {
JObject(child) <- parse(json_str)
item <- child
} yield (item.values:(String, JValue#Values))
list.foreach(println _)
2009幎12æ16æ¥18:40 é¢é <hawk...@gmail.com>:
> --
>
> ãã®ã¡ãŒã«ã¯ Google ã°ã«ãŒãã®ã°ã«ãŒããscala-beãã®ç»é²è
ã«éãããŠããŸãã
> ãã®ã°ã«ãŒãã«æçš¿ããã«ã¯ãscal...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
> ãã®ã°ã«ãŒãããéäŒããã«ã¯ãscala-be+u...@googlegroups.com ã«ã¡ãŒã«ãéä¿¡ããŠãã ããã
> 詳现ã«ã€ããŠã¯ãhttp://groups.google.com/group/scala-be?hl=ja ãããã®ã°ã«ãŒãã«ã¢ã¯ã»ã¹ããŠãã ããã
>
>
>
--
Kota Mizushima
e-mail: hau5...@tree.odn.ne.jp,mizu...@gmail.com
2009幎12æ16æ¥23:55 é¢é <hawk...@gmail.com>:
> æ°Žå³¶ãããž
>
> ããã°ãã¯ãé¢éã§ãã
>
> ãè¿äºããããšãããããŸãã
>
> ããŸãã¡ãããšã¯èª¿ã¹ãŠãŸãããã
> ãšãããããTracã«æ°ããTicketãæçš¿ããŠã¿ãŸããã
ãããã©ããããããšãããããŸãã
>
> 詳ãã説æãããããšãããããŸãã
> ãªããšãªãã¯çè§£ã§ããŸããããå匷äžè¶³ãçæããŸããã(^^;
> ç¹ã«ããã¹äŸååããšããã®ã¯ä»åãåè³ã§ããã
> Scalaã¯æ¬åœã«åã«é¢ããŠå¥¥æ·±ãã§ãããã»ã»ã»
>
> ïŒç¹ã JValue#Valuesãšããã®ã¯ãåçŽã«
> ãJValue ã¯ã©ã¹ã§å®çŸ©ãããŠããValuesåã
> ãšããæå³ã§è¯ãã®ã§ããããã
ããããçè§£ã§è¯ããšæããŸããT1#T2ã®ããã«æžããå Žå(type projectionãšåŒã³ãŸã)ã
åã«T1ã®ã¡ã³ãã§ããT2ã®åãšããæå³ã«ãªããŸã(Javaã®
T1.T2ãšåãæå³ã§ãã)ãäžæ¹ãt1.T2(t1ã¯åã§ã¯ãªãå€ã§ãt1ã®åã¯T1ãšãã)ã®
å Žåã倿°t1ãæããŠãããªããžã§ã¯ãã®ã¡ã³ãã§ããåT2ãšãã
æå³ã«ãªããŸããåè
ã®å Žåãã©ã®T2ã§ãã£ãŠããT1#T2åã®å€æ°ã«
代å
¥ã§ããŸãããåŸè
ã®å Žåãt1ã®ã€ã³ã¹ã¿ã³ã¹ããçæãããT2åãã
t1.T2åã«ä»£å
¥ã§ããªãç¹ãç°ãªããŸãã
ãã¯ããããããŸããé¢éã§ãã
解説ããããšãããããŸãã
>åè
ã®å Žåãã©ã®T2ã§ãã£ãŠããT1#T2åã®å€æ°ã«
> 代å
¥ã§ããŸãããåŸè
ã®å Žåãt1ã®ã€ã³ã¹ã¿ã³ã¹ããçæãããT2åãã
> t1.T2åã«ä»£å
¥ã§ããªãç¹ãç°ãªããŸãã
ãªãã»ã©ãããã§ã
>>> # æ£çŽãªãšãããJField#Valuesã®åã(String, value.Values)ãã
>>> # (String, JValue#Values)ã«å€æŽããŠããããã°ããããäžçªè¯ããããªæ°ãããŠããŸããâŠ
ã®èšãããšããŠããããšãçè§£ã§ããŸããã
ããããšãããããŸããã
ã¡ãªã¿ã«ãç»é²ãããã°ã¬ããŒãã¯
ãhttps://lampsvn.epfl.ch/trac/scala/ticket/2804
ããã§ãã
èªå翻蚳ã䜿ã£ãŠããã®ã§è±èªçã«ã¯ããããå¯èœæ§å€§ã§ããã
ãŸããæå³ã¯éããã§ãããã»ã»ã»(^^;
2009幎12æ17æ¥2:26 Kota Mizushima <mizu...@gmail.com>:
ããã«ã¡ã¯ãé¢éã§ãã
質åã°ããã§æçž®ã§ããããïŒç¹ã ãã»ã»ã»
çŽæçã«ã¯åäœãããã£ããããµã©ããšæµããŠããŸã£ãŠããŠã
å®ã¯ããããã£ãŠããªãã£ãç¹ãªãã§ããã
ïŒïŒ
ã>>>> } yield (item.values:(String, JValue#Values))
ãã®è¡ã®
ãã:(String, JValue#Values)ã
ãã®éšåã¯ã
ãèšèªä»æ§
ããhttp://www.scala-lang.org/docu/files/ScalaReference.pdf
ãã®ãïŒïŒããŒãžã«ããã
ãã6.13 Typed Expressions
ããExpr1 ::= PostfixExpr â:â CompoundType
ããå©çšããŠãããšã®çè§£ã§ããã§ããããã
ïŒïŒ
ããã®éšåãä»åã®å Žåã¯
ã} yield (item.values.asInstanceOf[(String, JValue#Values)])
ããšçœ®ãæããŠãåãããã§ããã
ãasInstanceOfãšã®éããã©ãçè§£ããã®ãè¯ãã®ã§ããããã
ã©ãããããããé¡ãããããŸãã
2009幎12æ17æ¥9:46 é¢é <hawk...@gmail.com>:
æ°Žå³¶ã§ãã
2009幎12æ17æ¥16:55 é¢é <hawk...@gmail.com>:
> æ°Žå³¶ãããž
>
> ããã«ã¡ã¯ãé¢éã§ãã
>
> 質åã°ããã§æçž®ã§ããããïŒç¹ã ãã»ã»ã»
>
> çŽæçã«ã¯åäœãããã£ããããµã©ããšæµããŠããŸã£ãŠããŠã
> å®ã¯ããããã£ãŠããªãã£ãç¹ãªãã§ããã
>
> ïŒïŒ
> ã>>>> } yield (item.values:(String, JValue#Values))
> ãã®è¡ã®
> ã:(String, JValue#Values)ã
> ã®éšåã¯ã
>
> èšèªä»æ§
> http://www.scala-lang.org/docu/files/ScalaReference.pdf
> ã®ãïŒïŒããŒãžã«ããã
> 6.13 Typed Expressions
> Expr1 ::= PostfixExpr â:â CompoundType
> ãå©çšããŠãããšã®çè§£ã§ããã§ããããã
ã¯ãããã®éšåã§åã£ãŠããŸãã
>
> ïŒïŒ
> ãã®éšåãä»åã®å Žåã¯
> } yield (item.values.asInstanceOf[(String, JValue#Values)])
> ãšçœ®ãæããŠãåãããã§ããã
>
> asInstanceOfãšã®éããã©ãçè§£ããã®ãè¯ãã®ã§ããããã
asInstanceOfã¯ç¡çç¢çåã倿ãããããåå®å
šã§ã¯ãªã(åã倿ãã
åŸã«åŠãªåäœ(ClassCastExceptionãå«ã)ãèµ·ããå¯èœæ§ããã)
ã®ã«å¯ŸããŠã
expr:typeã¯ãexprãtypeã«å€æã§ããªã(ãã®å€æãšããã®ã¯ãimplicit conversionã«ãããã®ã
å«ã¿ãŸã)å Žåã¯ã³ã³ãã€ã«æã«åãšã©ãŒãåºããããåå®å
šã§ãã
ãšããã®ã倧ããªéãã§ãã
ããã°ãã¯ãé¢éã§ãã
解説ããããšãããããŸãã
ãªãã»ã©ãè¯ãåãããŸããã
ããããšãããããŸããã
2009幎12æ17æ¥19:30 Kota Mizushima <mizu...@gmail.com>: