scala勉強会@東北がスタート

オンライン形式のscala勉強会に参加しました。スーパーなプログラマの方々にいろいろ教えていただく機会にめぐり合えたので、はりきってます。

ymnkさんの華麗なお膳立ての元、scala勉強会@東北第1回が開催されました。オンラインにてコードリーディング、というスタイル。週に1回1時間程度を継続していく予定。

試行錯誤中ではありますが、今回はskypeとpartty.orgでymnkさんの説明と端末を見ながら、手元のコードを読んで質問したりする形式でした。

「@東北」という名前がついてますが、こういう形式の勉強会が成功すれば、どこの誰とでも気軽に勉強会できるよねー、なんていう話をしながら実践しています。題材のソースコードも1回目の題材としてちょうど良くて(ほとんどJavaなんだけど、scala的文法が適度に散りばめられてる)、これをチョイスしたymnkさんの懐の広さを感じました。


参加してみての感想ですが、率直に、楽しかった&めちゃ勉強になりました。

「オレはプログラマではない」という意識は常々持っていますが、それは、プログラム言語自体をそれほど深く勉強したことがなくて、その自信の無さから出てくる言い訳的な発言だったりもします。
scalaに触れて、「あー、1からプログラミングを勉強するチャンスだな」と思ったので、この勉強会には積極的に参加していきたいと思っています。齢35にして、ようやくプログラマを目指す。

失笑をかうような質問でもどんどんさせていただこうと思っているので、みなさんよろしくお願いします。もちろん、いつまでもみなさんにオンブしているわけにも行かないので、急速に成長を遂げる予定です。


最後に今日学んだことをコードに起こしておきました。


package lets.scala;

class First {
  
  //インスタンス化のときにブロック内が実行
  // ブロックの戻り値が定数に束縛
  val hello = {
    def helloImpl = {
      "hello!!"
    }
    helloImpl
  }
  
  // 関数内に関数定義できる
  // loopを再帰でやる
  def numString(max:Int):String = {
    var str = ""
    def countDown( n:Int ) {
      str += n
      if( n > 0 ) countDown( n - 1 )
    }
    countDown(max)
    str
  }

}

object FirstApp extends First{
  
  def main(args : Array[String]) {
    
    println( hello )
    
    //implicit conversion
    // コンパイル時にStringクラスの拡張が行われる
    //   java.lang.String -> scala.runtime.RichString
    println( numString(9).toLong )
    
    // scala.Iterable#exists と無名関数
    val list = "person"::"position"::"post"::Nil
    if( list.exists( x => x == "person" ) )  println("include person")
    if( list.exists( _ == "position" ) )  println("include position")
    if( list.exists( x => x.startsWith("p" ) ) )  println("include p*")
    if( list.exists( x => ! x.startsWith("q" ) ) )  println("No q*")
    if( list exists (_ startsWith "po") )  println("include po*")

  }

}

同じカテゴリのエントリ
1.Lift再入門 / 8.javascriptからsubmitできない / 7.Ajax Form / 6.Radio、Checkboxについて / 5.行列型の編集FORM / 4.サーバーサイドバリデーションとサーバサイド関数 / 3.ログインFORM - S.param使ったら負け / 2.Snippetメソッドとして許される型 / sbt0.12.xで依存jar抽出タスク / scala2.10+lift2.5+NetBeans7.2 / Scalaで入門関数プログラミング / reactive-webを試してみました / Lift2.2M1のテンプレート機能 / Scala Compiler Plugin / View Bound/Context Bound / ScalaZa01参加してきました / Akka Frameworkチュートリアルの次 / Akka Frameworkチュートリアルその2 / Akka Frameworkチュートリアル / LiftでJCaptcha / Url Rewrite Filter / sbt-android-plugin / Android SDK for Scala / 祝Lift2.0リリース / Liftの携帯対応まとめ / Scala2.8への移行 / Lift 2.0-scala280-SNAPSHOT/sbt0.7.1 / Scalaお絵かき環境 - Kojo / Lift+Quartzでバッチ / Scala&Liftを採用した理由 / Liftでdate_select系ヘルパーを作る / LiftでAjax / LiftのSubmitかしこい / lift-mapperのpaginateを使う / snippetをspecする / Lift Mapperを拡張する / LiftのDBをMySQLに / Liftプロジェクト環境を整える / Scala本読み比べてみました / NetBeans6.7&scala / じつはScalaはライトな言語 / Scalaバザ~ル / lift1.0所感 / specsを読む / implicit def / ScalaならNetBeansがサイコー / scala勉強会@東北がスタート / それでも俺はLiftをやるってのか / Scala&Liftセットアップ / ブログリニューアル /
コメント

コメントしてください

closed.