問題です。
昨日のこの記事のソースをコンパイルした場合、classファイルはいくつできるでしょうか?
正解は、*113個でした(・∀・)
Hoge$$anonfun$getHtml$1.class Hoge$$anonfun$main$1.class Hoge$$anonfun$main$2.class Hoge$$anonfun$main$3.class Hoge$$anonfun$main$4.class Hoge$$anonfun$main$5$$anonfun$apply$1.class Hoge$$anonfun$main$5.class Hoge$$anonfun$main$6.class Hoge$$anonfun$main$7.class Hoge$$anonfun$main$8.class Hoge$$anonfun$main$9.class Hoge$.class Hoge.class
ちなみに、classファイルっていうのは、Java*2の仕様で決まっていて、
(内部クラスや無名クラスも含めて) class1つに対して、必ず1ファイルと決まっています。
自分が昨日書いたソースは、scalaのソース上は、objectが1つで、defで定義されているメソッドは3つですが、
それが実際コンパイルされた後は、どのようにJavaのclassにマッピングされるかっていうのを書こうかと思います。
ただ注意事項として、(scalaのソースをコンパイルしたあとの)classファイルの数っていうのは、仕様で決まってるかどうか知らないので、もしかしたら、versionなどによって変わるかもしれません。*3
それと、これ以下の説明も、べつに仕様書とか読んだわけではなく、あくまでも自分で分析した結果なのでその辺了解した上で読んでください(´・ω・`)
で、以下が、なぜ13個も生成されるのか?っていう解説
そもそも、objectを定義すると、
Hoge$.class Hoge.class
のように、そのobject名と、それに$をつけた2つのファイルが必ず作成されます。
あと、
Hoge$$anonfun$main$1.class
から
Hoge$$anonfun$main$9.class
まで、似たような名前で、末尾の数字だけ違うclassファイルが9つ生成されていますが、
これはそれぞれmain関数の中での高階関数使ってる数に、ぴったり一致してますね。
順に、
map map collect collect collect groupBy map sortWith foreach
というように使ってますから。
あとは、
Hoge$$anonfun$main$5$$anonfun$apply$1.class
というファイルですが、5っていうのは、おそらく5番目の高階関数の中って意味でしょう。
5番目って以下の部分ですが、↓
.collect{ case Some( xmlResponce ) => scala.xml.XML.loadString( xmlResponce ) \\ "nickname" map{_.text} // ← ここ }
この中で、もう1つ map 使ってますね。
このように map{_.text}っていう、たった数文字分のコードだとしても、
基本的に1つのclassファイルが生成されます。
同じように、
Hoge$$anonfun$getHtml$1.class
というのは、getHtmlって関数の中で、高階関数使ってますね*4
おまけとして、jadで逆コンパイルしたソース載せておきます。
ちなみに、jadで逆コンパイルするとき、
> jad **/*.class
というように指定すれば、カレントディレクトリ以下のclassファイルまとめて全てやってくれます。
よってそのやり方で逆コンパイルすれば、内部クラスがあったとしても、基本的には1つのソースに戻してくれます。
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: Hoge.scala package test1; import java.lang.ref.SoftReference; import java.lang.reflect.InvocationTargetException; import java.lang.reflect.Method; import scala.*; import scala.collection.*; import scala.collection.generic.GenericTraversableTemplate; import scala.collection.immutable.*; import scala.io.Source$; import scala.runtime.*; // Referenced classes of package test1: // Hoge public final class Hoge$ implements ScalaObject { public static Method reflMethod$Method1(Class class1) { if((MethodCache)reflPoly$Cache1.get() == null) reflPoly$Cache1 = new SoftReference(new EmptyMethodCache()); Method method1 = ((MethodCache)reflPoly$Cache1.get()).find(class1); if(method1 == null) { method1 = class1.getMethod("close", reflParams$Cache1); method1.setAccessible(true); reflPoly$Cache1 = new SoftReference(((MethodCache)reflPoly$Cache1.get()).add(class1, method1)); return method1; } else { return method1; } } public String getHtml$default$2() { return "UTF-8"; } public void main(String args[]) { scala.util.matching.Regex atnd$1 = Predef$.MODULE$.augmentString("(http://atnd.org/events/)(\\d+)").r(); ((LinearSeqOptimized)((TraversableOnce)((GenericTraversableTemplate)((TraversableLike)((TraversableLike)((TraversableLike)((TraversableLike)Predef$.MODULE$.intWrapper(2).to(18).map(new anonfun.main._cls1(), IndexedSeq$.MODULE$.canBuildFrom())).map(new anonfun.main._cls2(), IndexedSeq$.MODULE$.canBuildFrom())).collect(new anonfun.main._cls3(atnd$1), IndexedSeq$.MODULE$.canBuildFrom())).collect(new anonfun.main._cls4(atnd$1), IndexedSeq$.MODULE$.canBuildFrom())).collect(new anonfun.main._cls5(), IndexedSeq$.MODULE$.canBuildFrom())).flatten(Predef$.MODULE$.conforms()).groupBy(new anonfun.main._cls6()).map(new anonfun.main._cls7(), Map$.MODULE$.canBuildFrom())).toList().sortWith(new anonfun.main._cls8())).foreach(new anonfun.main._cls9()); } public Option getHtml(String url, String encode) { return using(Source$.MODULE$.fromURL(url, encode), new anonfun.getHtml._cls1()); } public Option using(Object resource, Function1 func) { Option exceptionResult1 = null; exceptionResult1 = new Some(func.apply(resource)); if(resource != null) { Object qual1 = resource; Object exceptionResult2 = null; Exception exception; Exception exception1; InvocationTargetException invocationtargetexception; try { exceptionResult2 = reflMethod$Method1(qual1.getClass()).invoke(qual1, new Object[0]); } catch(InvocationTargetException invocationtargetexception1) { throw invocationtargetexception1.getCause(); } exceptionResult2; BoxedUnit.UNIT; } break MISSING_BLOCK_LABEL_103; exception; exception.printStackTrace(); exceptionResult1 = None$.MODULE$; if(resource != null) { qual1 = resource; exceptionResult2 = null; try { exceptionResult2 = reflMethod$Method1(qual1.getClass()).invoke(qual1, new Object[0]); } // Misplaced declaration of an exception variable catch(InvocationTargetException invocationtargetexception) { throw invocationtargetexception.getCause(); } exceptionResult2; BoxedUnit.UNIT; } return exceptionResult1; exception1; if(resource != null) { qual1 = resource; exceptionResult2 = null; try { exceptionResult2 = reflMethod$Method1(qual1.getClass()).invoke(qual1, new Object[0]); } // Misplaced declaration of an exception variable catch(InvocationTargetException invocationtargetexception) { throw invocationtargetexception.getCause(); } exceptionResult2; BoxedUnit.UNIT; } throw exception1; } private Hoge$() { } public static final Hoge$ MODULE$ = this; private static final Class reflParams$Cache1[] = new Class[0]; private static volatile SoftReference reflPoly$Cache1 = new SoftReference(new EmptyMethodCache()); static { new Hoge$(); } }
// Decompiled by Jad v1.5.8g. Copyright 2001 Pavel Kouznetsov. // Jad home page: http://www.kpdus.com/jad.html // Decompiler options: packimports(3) // Source File Name: Hoge.scala package test1; import java.io.Serializable; import scala.*; import scala.collection.*; import scala.collection.immutable.*; import scala.collection.mutable.StringBuilder; import scala.io.BufferedSource; import scala.runtime.*; import scala.util.matching.Regex; import scala.xml.Node; import scala.xml.XML$; import scala.xml.factory.XMLLoader; // Referenced classes of package test1: // Hoge$ public final class Hoge { public static final String getHtml$default$2() { return Hoge$.MODULE$.getHtml$default$2(); } public static final Option using(Object obj, Function1 function1) { return Hoge$.MODULE$.using(obj, function1); } public static final Option getHtml(String s, String s1) { return Hoge$.MODULE$.getHtml(s, s1); } public static final void main(String args[]) { Hoge$.MODULE$.main(args); } // Unreferenced inner class test1/Hoge$$anonfun$main$9 public static final class .anonfun.main._cls9 extends AbstractFunction1 implements Serializable { public final void apply(Object obj) { Predef$.MODULE$.println(obj); } public final volatile Object apply(Object v1) { apply(v1); return BoxedUnit.UNIT; } public static final long serialVersionUID = 0L; public .anonfun.main._cls9() { } } // Unreferenced inner class test1/Hoge$$anonfun$main$8 public static final class .anonfun.main._cls8 extends AbstractFunction2 implements Serializable { public final boolean apply(Tuple2 tuple2, Tuple2 tuple2_1) { Tuple2 tuple2_2 = tuple2; Tuple2 tuple2_3 = tuple2_1; if(tuple2_2 == null) throw new MatchError(new Tuple2(tuple2_2, tuple2_3)); int i = BoxesRunTime.unboxToInt(tuple2_2._2()); if(tuple2_3 == null) throw new MatchError(new Tuple2(tuple2_2, tuple2_3)); else return i > BoxesRunTime.unboxToInt(tuple2_3._2()); } public final volatile Object apply(Object v1, Object v2) { return BoxesRunTime.boxToBoolean(apply((Tuple2)v1, (Tuple2)v2)); } public static final long serialVersionUID = 0L; public .anonfun.main._cls8() { } } // Unreferenced inner class test1/Hoge$$anonfun$main$7 public static final class .anonfun.main._cls7 extends AbstractFunction1 implements Serializable { public final Tuple2 apply(Tuple2 tuple2) { Tuple2 tuple2_1 = tuple2; if(tuple2_1 == null) throw new MatchError(tuple2_1); else return new Tuple2(tuple2_1._1(), BoxesRunTime.boxToInteger(((SeqLike)tuple2_1._2()).size())); } public final volatile Object apply(Object v1) { return apply((Tuple2)v1); } public static final long serialVersionUID = 0L; public .anonfun.main._cls7() { } } // Unreferenced inner class test1/Hoge$$anonfun$main$6 public static final class .anonfun.main._cls6 extends AbstractFunction1 implements Serializable { public final String apply(String a) { return a; } public final volatile Object apply(Object v1) { return apply((String)v1); } public static final long serialVersionUID = 0L; public .anonfun.main._cls6() { } } // Unreferenced inner class test1/Hoge$$anonfun$main$5 public static final class .anonfun.main._cls5 implements PartialFunction, Serializable { public PartialFunction orElse(PartialFunction that) { return scala.PartialFunction.class.orElse(this, that); } public PartialFunction andThen(Function1 k) { return scala.PartialFunction.class.andThen(this, k); } public Function1 lift() { return scala.PartialFunction.class.lift(this); } public void apply$mcVI$sp(int v1) { scala.Function1.class.apply$mcVI$sp(this, v1); } public boolean apply$mcZI$sp(int v1) { return scala.Function1.class.apply$mcZI$sp(this, v1); } public int apply$mcII$sp(int v1) { return scala.Function1.class.apply$mcII$sp(this, v1); } public float apply$mcFI$sp(int v1) { return scala.Function1.class.apply$mcFI$sp(this, v1); } public long apply$mcLI$sp(int v1) { return scala.Function1.class.apply$mcLI$sp(this, v1); } public double apply$mcDI$sp(int v1) { return scala.Function1.class.apply$mcDI$sp(this, v1); } public void apply$mcVL$sp(long v1) { scala.Function1.class.apply$mcVL$sp(this, v1); } public boolean apply$mcZL$sp(long v1) { return scala.Function1.class.apply$mcZL$sp(this, v1); } public int apply$mcIL$sp(long v1) { return scala.Function1.class.apply$mcIL$sp(this, v1); } public float apply$mcFL$sp(long v1) { return scala.Function1.class.apply$mcFL$sp(this, v1); } public long apply$mcLL$sp(long v1) { return scala.Function1.class.apply$mcLL$sp(this, v1); } public double apply$mcDL$sp(long v1) { return scala.Function1.class.apply$mcDL$sp(this, v1); } public void apply$mcVF$sp(float v1) { scala.Function1.class.apply$mcVF$sp(this, v1); } public boolean apply$mcZF$sp(float v1) { return scala.Function1.class.apply$mcZF$sp(this, v1); } public int apply$mcIF$sp(float v1) { return scala.Function1.class.apply$mcIF$sp(this, v1); } public float apply$mcFF$sp(float v1) { return scala.Function1.class.apply$mcFF$sp(this, v1); } public long apply$mcLF$sp(float v1) { return scala.Function1.class.apply$mcLF$sp(this, v1); } public double apply$mcDF$sp(float v1) { return scala.Function1.class.apply$mcDF$sp(this, v1); } public void apply$mcVD$sp(double v1) { scala.Function1.class.apply$mcVD$sp(this, v1); } public boolean apply$mcZD$sp(double v1) { return scala.Function1.class.apply$mcZD$sp(this, v1); } public int apply$mcID$sp(double v1) { return scala.Function1.class.apply$mcID$sp(this, v1); } public float apply$mcFD$sp(double v1) { return scala.Function1.class.apply$mcFD$sp(this, v1); } public long apply$mcLD$sp(double v1) { return scala.Function1.class.apply$mcLD$sp(this, v1); } public double apply$mcDD$sp(double v1) { return scala.Function1.class.apply$mcDD$sp(this, v1); } public String toString() { return scala.Function1.class.toString(this); } public Function1 compose(Function1 g) { return scala.Function1.class.compose(this, g); } public Function1 compose$mcVI$sp(Function1 g) { return scala.Function1.class.compose$mcVI$sp(this, g); } public Function1 compose$mcZI$sp(Function1 g) { return scala.Function1.class.compose$mcZI$sp(this, g); } public Function1 compose$mcII$sp(Function1 g) { return scala.Function1.class.compose$mcII$sp(this, g); } public Function1 compose$mcFI$sp(Function1 g) { return scala.Function1.class.compose$mcFI$sp(this, g); } public Function1 compose$mcLI$sp(Function1 g) { return scala.Function1.class.compose$mcLI$sp(this, g); } public Function1 compose$mcDI$sp(Function1 g) { return scala.Function1.class.compose$mcDI$sp(this, g); } public Function1 compose$mcVL$sp(Function1 g) { return scala.Function1.class.compose$mcVL$sp(this, g); } public Function1 compose$mcZL$sp(Function1 g) { return scala.Function1.class.compose$mcZL$sp(this, g); } public Function1 compose$mcIL$sp(Function1 g) { return scala.Function1.class.compose$mcIL$sp(this, g); } public Function1 compose$mcFL$sp(Function1 g) { return scala.Function1.class.compose$mcFL$sp(this, g); } public Function1 compose$mcLL$sp(Function1 g) { return scala.Function1.class.compose$mcLL$sp(this, g); } public Function1 compose$mcDL$sp(Function1 g) { return scala.Function1.class.compose$mcDL$sp(this, g); } public Function1 compose$mcVF$sp(Function1 g) { return scala.Function1.class.compose$mcVF$sp(this, g); } public Function1 compose$mcZF$sp(Function1 g) { return scala.Function1.class.compose$mcZF$sp(this, g); } public Function1 compose$mcIF$sp(Function1 g) { return scala.Function1.class.compose$mcIF$sp(this, g); } public Function1 compose$mcFF$sp(Function1 g) { return scala.Function1.class.compose$mcFF$sp(this, g); } public Function1 compose$mcLF$sp(Function1 g) { return scala.Function1.class.compose$mcLF$sp(this, g); } public Function1 compose$mcDF$sp(Function1 g) { return scala.Function1.class.compose$mcDF$sp(this, g); } public Function1 compose$mcVD$sp(Function1 g) { return scala.Function1.class.compose$mcVD$sp(this, g); } public Function1 compose$mcZD$sp(Function1 g) { return scala.Function1.class.compose$mcZD$sp(this, g); } public Function1 compose$mcID$sp(Function1 g) { return scala.Function1.class.compose$mcID$sp(this, g); } public Function1 compose$mcFD$sp(Function1 g) { return scala.Function1.class.compose$mcFD$sp(this, g); } public Function1 compose$mcLD$sp(Function1 g) { return scala.Function1.class.compose$mcLD$sp(this, g); } public Function1 compose$mcDD$sp(Function1 g) { return scala.Function1.class.compose$mcDD$sp(this, g); } public Function1 andThen$mcVI$sp(Function1 g) { return scala.Function1.class.andThen$mcVI$sp(this, g); } public Function1 andThen$mcZI$sp(Function1 g) { return scala.Function1.class.andThen$mcZI$sp(this, g); } public Function1 andThen$mcII$sp(Function1 g) { return scala.Function1.class.andThen$mcII$sp(this, g); } public Function1 andThen$mcFI$sp(Function1 g) { return scala.Function1.class.andThen$mcFI$sp(this, g); } public Function1 andThen$mcLI$sp(Function1 g) { return scala.Function1.class.andThen$mcLI$sp(this, g); } public Function1 andThen$mcDI$sp(Function1 g) { return scala.Function1.class.andThen$mcDI$sp(this, g); } public Function1 andThen$mcVL$sp(Function1 g) { return scala.Function1.class.andThen$mcVL$sp(this, g); } public Function1 andThen$mcZL$sp(Function1 g) { return scala.Function1.class.andThen$mcZL$sp(this, g); } public Function1 andThen$mcIL$sp(Function1 g) { return scala.Function1.class.andThen$mcIL$sp(this, g); } public Function1 andThen$mcFL$sp(Function1 g) { return scala.Function1.class.andThen$mcFL$sp(this, g); } public Function1 andThen$mcLL$sp(Function1 g) { return scala.Function1.class.andThen$mcLL$sp(this, g); } public Function1 andThen$mcDL$sp(Function1 g) { return scala.Function1.class.andThen$mcDL$sp(this, g); } public Function1 andThen$mcVF$sp(Function1 g) { return scala.Function1.class.andThen$mcVF$sp(this, g); } public Function1 andThen$mcZF$sp(Function1 g) { return scala.Function1.class.andThen$mcZF$sp(this, g); } public Function1 andThen$mcIF$sp(Function1 g) { return scala.Function1.class.andThen$mcIF$sp(this, g); } public Function1 andThen$mcFF$sp(Function1 g) { return scala.Function1.class.andThen$mcFF$sp(this, g); } public Function1 andThen$mcLF$sp(Function1 g) { return scala.Function1.class.andThen$mcLF$sp(this, g); } public Function1 andThen$mcDF$sp(Function1 g) { return scala.Function1.class.andThen$mcDF$sp(this, g); } public Function1 andThen$mcVD$sp(Function1 g) { return scala.Function1.class.andThen$mcVD$sp(this, g); } public Function1 andThen$mcZD$sp(Function1 g) { return scala.Function1.class.andThen$mcZD$sp(this, g); } public Function1 andThen$mcID$sp(Function1 g) { return scala.Function1.class.andThen$mcID$sp(this, g); } public Function1 andThen$mcFD$sp(Function1 g) { return scala.Function1.class.andThen$mcFD$sp(this, g); } public Function1 andThen$mcLD$sp(Function1 g) { return scala.Function1.class.andThen$mcLD$sp(this, g); } public Function1 andThen$mcDD$sp(Function1 g) { return scala.Function1.class.andThen$mcDD$sp(this, g); } public final Seq apply(Option option) { Option option1 = option; public final class .anonfun.apply._cls1 extends AbstractFunction1 implements Serializable { public final String apply(Node node) { return node.text(); } public final volatile Object apply(Object v1) { return apply((Node)v1); } public static final long serialVersionUID = 0L; public .anonfun.apply._cls1() { } } if(option1 instanceof Some) return (Seq)XML$.MODULE$.loadString((String)((Some)option1).x()).$bslash$bslash("nickname").map(new .anonfun.apply._cls1(), Seq$.MODULE$.canBuildFrom()); else throw new MatchError(option1); } public final boolean isDefinedAt(Option option) { Option option1 = option; return option1 instanceof Some; } public volatile Function1 andThen(Function1 g) { return andThen(g); } public final volatile boolean isDefinedAt(Object x) { return isDefinedAt((Option)x); } public final volatile Object apply(Object v1) { return apply((Option)v1); } public static final long serialVersionUID = 0L; public .anonfun.main._cls5() { scala.Function1.class.$init$(this); scala.PartialFunction.class.$init$(this); } } // Unreferenced inner class test1/Hoge$$anonfun$main$4 public static final class .anonfun.main._cls4 implements PartialFunction, Serializable { public PartialFunction orElse(PartialFunction that) { return scala.PartialFunction.class.orElse(this, that); } public PartialFunction andThen(Function1 k) { return scala.PartialFunction.class.andThen(this, k); } public Function1 lift() { return scala.PartialFunction.class.lift(this); } public void apply$mcVI$sp(int v1) { scala.Function1.class.apply$mcVI$sp(this, v1); } public boolean apply$mcZI$sp(int v1) { return scala.Function1.class.apply$mcZI$sp(this, v1); } public int apply$mcII$sp(int v1) { return scala.Function1.class.apply$mcII$sp(this, v1); } public float apply$mcFI$sp(int v1) { return scala.Function1.class.apply$mcFI$sp(this, v1); } public long apply$mcLI$sp(int v1) { return scala.Function1.class.apply$mcLI$sp(this, v1); } public double apply$mcDI$sp(int v1) { return scala.Function1.class.apply$mcDI$sp(this, v1); } public void apply$mcVL$sp(long v1) { scala.Function1.class.apply$mcVL$sp(this, v1); } public boolean apply$mcZL$sp(long v1) { return scala.Function1.class.apply$mcZL$sp(this, v1); } public int apply$mcIL$sp(long v1) { return scala.Function1.class.apply$mcIL$sp(this, v1); } public float apply$mcFL$sp(long v1) { return scala.Function1.class.apply$mcFL$sp(this, v1); } public long apply$mcLL$sp(long v1) { return scala.Function1.class.apply$mcLL$sp(this, v1); } public double apply$mcDL$sp(long v1) { return scala.Function1.class.apply$mcDL$sp(this, v1); } public void apply$mcVF$sp(float v1) { scala.Function1.class.apply$mcVF$sp(this, v1); } public boolean apply$mcZF$sp(float v1) { return scala.Function1.class.apply$mcZF$sp(this, v1); } public int apply$mcIF$sp(float v1) { return scala.Function1.class.apply$mcIF$sp(this, v1); } public float apply$mcFF$sp(float v1) { return scala.Function1.class.apply$mcFF$sp(this, v1); } public long apply$mcLF$sp(float v1) { return scala.Function1.class.apply$mcLF$sp(this, v1); } public double apply$mcDF$sp(float v1) { return scala.Function1.class.apply$mcDF$sp(this, v1); } public void apply$mcVD$sp(double v1) { scala.Function1.class.apply$mcVD$sp(this, v1); } public boolean apply$mcZD$sp(double v1) { return scala.Function1.class.apply$mcZD$sp(this, v1); } public int apply$mcID$sp(double v1) { return scala.Function1.class.apply$mcID$sp(this, v1); } public float apply$mcFD$sp(double v1) { return scala.Function1.class.apply$mcFD$sp(this, v1); } public long apply$mcLD$sp(double v1) { return scala.Function1.class.apply$mcLD$sp(this, v1); } public double apply$mcDD$sp(double v1) { return scala.Function1.class.apply$mcDD$sp(this, v1); } public String toString() { return scala.Function1.class.toString(this); } public Function1 compose(Function1 g) { return scala.Function1.class.compose(this, g); } public Function1 compose$mcVI$sp(Function1 g) { return scala.Function1.class.compose$mcVI$sp(this, g); } public Function1 compose$mcZI$sp(Function1 g) { return scala.Function1.class.compose$mcZI$sp(this, g); } public Function1 compose$mcII$sp(Function1 g) { return scala.Function1.class.compose$mcII$sp(this, g); } public Function1 compose$mcFI$sp(Function1 g) { return scala.Function1.class.compose$mcFI$sp(this, g); } public Function1 compose$mcLI$sp(Function1 g) { return scala.Function1.class.compose$mcLI$sp(this, g); } public Function1 compose$mcDI$sp(Function1 g) { return scala.Function1.class.compose$mcDI$sp(this, g); } public Function1 compose$mcVL$sp(Function1 g) { return scala.Function1.class.compose$mcVL$sp(this, g); } public Function1 compose$mcZL$sp(Function1 g) { return scala.Function1.class.compose$mcZL$sp(this, g); } public Function1 compose$mcIL$sp(Function1 g) { return scala.Function1.class.compose$mcIL$sp(this, g); } public Function1 compose$mcFL$sp(Function1 g) { return scala.Function1.class.compose$mcFL$sp(this, g); } public Function1 compose$mcLL$sp(Function1 g) { return scala.Function1.class.compose$mcLL$sp(this, g); } public Function1 compose$mcDL$sp(Function1 g) { return scala.Function1.class.compose$mcDL$sp(this, g); } public Function1 compose$mcVF$sp(Function1 g) { return scala.Function1.class.compose$mcVF$sp(this, g); } public Function1 compose$mcZF$sp(Function1 g) { return scala.Function1.class.compose$mcZF$sp(this, g); } public Function1 compose$mcIF$sp(Function1 g) { return scala.Function1.class.compose$mcIF$sp(this, g); } public Function1 compose$mcFF$sp(Function1 g) { return scala.Function1.class.compose$mcFF$sp(this, g); } public Function1 compose$mcLF$sp(Function1 g) { return scala.Function1.class.compose$mcLF$sp(this, g); } public Function1 compose$mcDF$sp(Function1 g) { return scala.Function1.class.compose$mcDF$sp(this, g); } public Function1 compose$mcVD$sp(Function1 g) { return scala.Function1.class.compose$mcVD$sp(this, g); } public Function1 compose$mcZD$sp(Function1 g) { return scala.Function1.class.compose$mcZD$sp(this, g); } public Function1 compose$mcID$sp(Function1 g) { return scala.Function1.class.compose$mcID$sp(this, g); } public Function1 compose$mcFD$sp(Function1 g) { return scala.Function1.class.compose$mcFD$sp(this, g); } public Function1 compose$mcLD$sp(Function1 g) { return scala.Function1.class.compose$mcLD$sp(this, g); } public Function1 compose$mcDD$sp(Function1 g) { return scala.Function1.class.compose$mcDD$sp(this, g); } public Function1 andThen$mcVI$sp(Function1 g) { return scala.Function1.class.andThen$mcVI$sp(this, g); } public Function1 andThen$mcZI$sp(Function1 g) { return scala.Function1.class.andThen$mcZI$sp(this, g); } public Function1 andThen$mcII$sp(Function1 g) { return scala.Function1.class.andThen$mcII$sp(this, g); } public Function1 andThen$mcFI$sp(Function1 g) { return scala.Function1.class.andThen$mcFI$sp(this, g); } public Function1 andThen$mcLI$sp(Function1 g) { return scala.Function1.class.andThen$mcLI$sp(this, g); } public Function1 andThen$mcDI$sp(Function1 g) { return scala.Function1.class.andThen$mcDI$sp(this, g); } public Function1 andThen$mcVL$sp(Function1 g) { return scala.Function1.class.andThen$mcVL$sp(this, g); } public Function1 andThen$mcZL$sp(Function1 g) { return scala.Function1.class.andThen$mcZL$sp(this, g); } public Function1 andThen$mcIL$sp(Function1 g) { return scala.Function1.class.andThen$mcIL$sp(this, g); } public Function1 andThen$mcFL$sp(Function1 g) { return scala.Function1.class.andThen$mcFL$sp(this, g); } public Function1 andThen$mcLL$sp(Function1 g) { return scala.Function1.class.andThen$mcLL$sp(this, g); } public Function1 andThen$mcDL$sp(Function1 g) { return scala.Function1.class.andThen$mcDL$sp(this, g); } public Function1 andThen$mcVF$sp(Function1 g) { return scala.Function1.class.andThen$mcVF$sp(this, g); } public Function1 andThen$mcZF$sp(Function1 g) { return scala.Function1.class.andThen$mcZF$sp(this, g); } public Function1 andThen$mcIF$sp(Function1 g) { return scala.Function1.class.andThen$mcIF$sp(this, g); } public Function1 andThen$mcFF$sp(Function1 g) { return scala.Function1.class.andThen$mcFF$sp(this, g); } public Function1 andThen$mcLF$sp(Function1 g) { return scala.Function1.class.andThen$mcLF$sp(this, g); } public Function1 andThen$mcDF$sp(Function1 g) { return scala.Function1.class.andThen$mcDF$sp(this, g); } public Function1 andThen$mcVD$sp(Function1 g) { return scala.Function1.class.andThen$mcVD$sp(this, g); } public Function1 andThen$mcZD$sp(Function1 g) { return scala.Function1.class.andThen$mcZD$sp(this, g); } public Function1 andThen$mcID$sp(Function1 g) { return scala.Function1.class.andThen$mcID$sp(this, g); } public Function1 andThen$mcFD$sp(Function1 g) { return scala.Function1.class.andThen$mcFD$sp(this, g); } public Function1 andThen$mcLD$sp(Function1 g) { return scala.Function1.class.andThen$mcLD$sp(this, g); } public Function1 andThen$mcDD$sp(Function1 g) { return scala.Function1.class.andThen$mcDD$sp(this, g); } public final Option apply(Option option) { Option option1 = option; if(option1 instanceof Some) { Some some = (Some)option1; String s = (String)some.x(); Option option2 = atnd$1.unapplySeq(s); if(option2.isEmpty()) throw new MatchError(option1); List list = (List)option2.get(); if(list != null ? list.lengthCompare(2) == 0 : false) return Hoge$.MODULE$.getHtml((new StringBuilder()).append("http://api.atnd.org/events/users/?event_id=").append(list.apply(1)).toString(), Hoge$.MODULE$.getHtml$default$2()); else throw new MatchError(option1); } else { throw new MatchError(option1); } } public final boolean isDefinedAt(Option option) { Option option1 = option; if(!(option1 instanceof Some)) goto _L2; else goto _L1 _L1: Option option2; Some some = (Some)option1; String s = (String)some.x(); option2 = atnd$1.unapplySeq(s); List list; option2.isEmpty() ? false : (list = (List)option2.get()) != null ? list.lengthCompare(2) == 0 : false; goto _L3 _L2: false; _L3: return; } public volatile Function1 andThen(Function1 g) { return andThen(g); } public final volatile boolean isDefinedAt(Object x) { return isDefinedAt((Option)x); } public final volatile Object apply(Object v1) { return apply((Option)v1); } public static final long serialVersionUID = 0L; private final Regex atnd$1; public .anonfun.main._cls4(Regex regex) { atnd$1 = regex; super(); scala.Function1.class.$init$(this); scala.PartialFunction.class.$init$(this); } } // Unreferenced inner class test1/Hoge$$anonfun$main$3 public static final class .anonfun.main._cls3 implements PartialFunction, Serializable { public PartialFunction orElse(PartialFunction that) { return scala.PartialFunction.class.orElse(this, that); } public PartialFunction andThen(Function1 k) { return scala.PartialFunction.class.andThen(this, k); } public Function1 lift() { return scala.PartialFunction.class.lift(this); } public void apply$mcVI$sp(int v1) { scala.Function1.class.apply$mcVI$sp(this, v1); } public boolean apply$mcZI$sp(int v1) { return scala.Function1.class.apply$mcZI$sp(this, v1); } public int apply$mcII$sp(int v1) { return scala.Function1.class.apply$mcII$sp(this, v1); } public float apply$mcFI$sp(int v1) { return scala.Function1.class.apply$mcFI$sp(this, v1); } public long apply$mcLI$sp(int v1) { return scala.Function1.class.apply$mcLI$sp(this, v1); } public double apply$mcDI$sp(int v1) { return scala.Function1.class.apply$mcDI$sp(this, v1); } public void apply$mcVL$sp(long v1) { scala.Function1.class.apply$mcVL$sp(this, v1); } public boolean apply$mcZL$sp(long v1) { return scala.Function1.class.apply$mcZL$sp(this, v1); } public int apply$mcIL$sp(long v1) { return scala.Function1.class.apply$mcIL$sp(this, v1); } public float apply$mcFL$sp(long v1) { return scala.Function1.class.apply$mcFL$sp(this, v1); } public long apply$mcLL$sp(long v1) { return scala.Function1.class.apply$mcLL$sp(this, v1); } public double apply$mcDL$sp(long v1) { return scala.Function1.class.apply$mcDL$sp(this, v1); } public void apply$mcVF$sp(float v1) { scala.Function1.class.apply$mcVF$sp(this, v1); } public boolean apply$mcZF$sp(float v1) { return scala.Function1.class.apply$mcZF$sp(this, v1); } public int apply$mcIF$sp(float v1) { return scala.Function1.class.apply$mcIF$sp(this, v1); } public float apply$mcFF$sp(float v1) { return scala.Function1.class.apply$mcFF$sp(this, v1); } public long apply$mcLF$sp(float v1) { return scala.Function1.class.apply$mcLF$sp(this, v1); } public double apply$mcDF$sp(float v1) { return scala.Function1.class.apply$mcDF$sp(this, v1); } public void apply$mcVD$sp(double v1) { scala.Function1.class.apply$mcVD$sp(this, v1); } public boolean apply$mcZD$sp(double v1) { return scala.Function1.class.apply$mcZD$sp(this, v1); } public int apply$mcID$sp(double v1) { return scala.Function1.class.apply$mcID$sp(this, v1); } public float apply$mcFD$sp(double v1) { return scala.Function1.class.apply$mcFD$sp(this, v1); } public long apply$mcLD$sp(double v1) { return scala.Function1.class.apply$mcLD$sp(this, v1); } public double apply$mcDD$sp(double v1) { return scala.Function1.class.apply$mcDD$sp(this, v1); } public String toString() { return scala.Function1.class.toString(this); } public Function1 compose(Function1 g) { return scala.Function1.class.compose(this, g); } public Function1 compose$mcVI$sp(Function1 g) { return scala.Function1.class.compose$mcVI$sp(this, g); } public Function1 compose$mcZI$sp(Function1 g) { return scala.Function1.class.compose$mcZI$sp(this, g); } public Function1 compose$mcII$sp(Function1 g) { return scala.Function1.class.compose$mcII$sp(this, g); } public Function1 compose$mcFI$sp(Function1 g) { return scala.Function1.class.compose$mcFI$sp(this, g); } public Function1 compose$mcLI$sp(Function1 g) { return scala.Function1.class.compose$mcLI$sp(this, g); } public Function1 compose$mcDI$sp(Function1 g) { return scala.Function1.class.compose$mcDI$sp(this, g); } public Function1 compose$mcVL$sp(Function1 g) { return scala.Function1.class.compose$mcVL$sp(this, g); } public Function1 compose$mcZL$sp(Function1 g) { return scala.Function1.class.compose$mcZL$sp(this, g); } public Function1 compose$mcIL$sp(Function1 g) { return scala.Function1.class.compose$mcIL$sp(this, g); } public Function1 compose$mcFL$sp(Function1 g) { return scala.Function1.class.compose$mcFL$sp(this, g); } public Function1 compose$mcLL$sp(Function1 g) { return scala.Function1.class.compose$mcLL$sp(this, g); } public Function1 compose$mcDL$sp(Function1 g) { return scala.Function1.class.compose$mcDL$sp(this, g); } public Function1 compose$mcVF$sp(Function1 g) { return scala.Function1.class.compose$mcVF$sp(this, g); } public Function1 compose$mcZF$sp(Function1 g) { return scala.Function1.class.compose$mcZF$sp(this, g); } public Function1 compose$mcIF$sp(Function1 g) { return scala.Function1.class.compose$mcIF$sp(this, g); } public Function1 compose$mcFF$sp(Function1 g) { return scala.Function1.class.compose$mcFF$sp(this, g); } public Function1 compose$mcLF$sp(Function1 g) { return scala.Function1.class.compose$mcLF$sp(this, g); } public Function1 compose$mcDF$sp(Function1 g) { return scala.Function1.class.compose$mcDF$sp(this, g); } public Function1 compose$mcVD$sp(Function1 g) { return scala.Function1.class.compose$mcVD$sp(this, g); } public Function1 compose$mcZD$sp(Function1 g) { return scala.Function1.class.compose$mcZD$sp(this, g); } public Function1 compose$mcID$sp(Function1 g) { return scala.Function1.class.compose$mcID$sp(this, g); } public Function1 compose$mcFD$sp(Function1 g) { return scala.Function1.class.compose$mcFD$sp(this, g); } public Function1 compose$mcLD$sp(Function1 g) { return scala.Function1.class.compose$mcLD$sp(this, g); } public Function1 compose$mcDD$sp(Function1 g) { return scala.Function1.class.compose$mcDD$sp(this, g); } public Function1 andThen$mcVI$sp(Function1 g) { return scala.Function1.class.andThen$mcVI$sp(this, g); } public Function1 andThen$mcZI$sp(Function1 g) { return scala.Function1.class.andThen$mcZI$sp(this, g); } public Function1 andThen$mcII$sp(Function1 g) { return scala.Function1.class.andThen$mcII$sp(this, g); } public Function1 andThen$mcFI$sp(Function1 g) { return scala.Function1.class.andThen$mcFI$sp(this, g); } public Function1 andThen$mcLI$sp(Function1 g) { return scala.Function1.class.andThen$mcLI$sp(this, g); } public Function1 andThen$mcDI$sp(Function1 g) { return scala.Function1.class.andThen$mcDI$sp(this, g); } public Function1 andThen$mcVL$sp(Function1 g) { return scala.Function1.class.andThen$mcVL$sp(this, g); } public Function1 andThen$mcZL$sp(Function1 g) { return scala.Function1.class.andThen$mcZL$sp(this, g); } public Function1 andThen$mcIL$sp(Function1 g) { return scala.Function1.class.andThen$mcIL$sp(this, g); } public Function1 andThen$mcFL$sp(Function1 g) { return scala.Function1.class.andThen$mcFL$sp(this, g); } public Function1 andThen$mcLL$sp(Function1 g) { return scala.Function1.class.andThen$mcLL$sp(this, g); } public Function1 andThen$mcDL$sp(Function1 g) { return scala.Function1.class.andThen$mcDL$sp(this, g); } public Function1 andThen$mcVF$sp(Function1 g) { return scala.Function1.class.andThen$mcVF$sp(this, g); } public Function1 andThen$mcZF$sp(Function1 g) { return scala.Function1.class.andThen$mcZF$sp(this, g); } public Function1 andThen$mcIF$sp(Function1 g) { return scala.Function1.class.andThen$mcIF$sp(this, g); } public Function1 andThen$mcFF$sp(Function1 g) { return scala.Function1.class.andThen$mcFF$sp(this, g); } public Function1 andThen$mcLF$sp(Function1 g) { return scala.Function1.class.andThen$mcLF$sp(this, g); } public Function1 andThen$mcDF$sp(Function1 g) { return scala.Function1.class.andThen$mcDF$sp(this, g); } public Function1 andThen$mcVD$sp(Function1 g) { return scala.Function1.class.andThen$mcVD$sp(this, g); } public Function1 andThen$mcZD$sp(Function1 g) { return scala.Function1.class.andThen$mcZD$sp(this, g); } public Function1 andThen$mcID$sp(Function1 g) { return scala.Function1.class.andThen$mcID$sp(this, g); } public Function1 andThen$mcFD$sp(Function1 g) { return scala.Function1.class.andThen$mcFD$sp(this, g); } public Function1 andThen$mcLD$sp(Function1 g) { return scala.Function1.class.andThen$mcLD$sp(this, g); } public Function1 andThen$mcDD$sp(Function1 g) { return scala.Function1.class.andThen$mcDD$sp(this, g); } public final Option apply(Option option) { Option option1 = option; if(option1 instanceof Some) return atnd$1.findFirstIn((CharSequence)((Some)option1).x()); else throw new MatchError(option1); } public final boolean isDefinedAt(Option option) { Option option1 = option; return option1 instanceof Some; } public volatile Function1 andThen(Function1 g) { return andThen(g); } public final volatile boolean isDefinedAt(Object x) { return isDefinedAt((Option)x); } public final volatile Object apply(Object v1) { return apply((Option)v1); } public static final long serialVersionUID = 0L; private final Regex atnd$1; public .anonfun.main._cls3(Regex regex) { atnd$1 = regex; super(); scala.Function1.class.$init$(this); scala.PartialFunction.class.$init$(this); } } // Unreferenced inner class test1/Hoge$$anonfun$main$2 public static final class .anonfun.main._cls2 extends AbstractFunction1 implements Serializable { public final Option apply(String s) { return Hoge$.MODULE$.getHtml(s, Hoge$.MODULE$.getHtml$default$2()); } public final volatile Object apply(Object v1) { return apply((String)v1); } public static final long serialVersionUID = 0L; public .anonfun.main._cls2() { } } // Unreferenced inner class test1/Hoge$$anonfun$main$1 public static final class .anonfun.main._cls1 extends AbstractFunction1 implements Serializable { public final String apply(int n) { return (new StringBuilder()).append("http://scala-users.org/shibuya/index.php?title=%E5%8B%89%E5%BC%B7%E4%BC%9A%E7%AC%AC").append(BoxesRunTime.boxToInteger(n)).append("%E5%9B%9E").toString(); } public final volatile Object apply(Object v1) { return apply(BoxesRunTime.unboxToInt(v1)); } public static final long serialVersionUID = 0L; public .anonfun.main._cls1() { } } // Unreferenced inner class test1/Hoge$$anonfun$getHtml$1 public static final class .anonfun.getHtml._cls1 extends AbstractFunction1 implements Serializable { public final String apply(BufferedSource bufferedsource) { return bufferedsource.mkString(); } public final volatile Object apply(Object v1) { return apply((BufferedSource)v1); } public static final long serialVersionUID = 0L; public .anonfun.getHtml._cls1() { } } }