コグノスケ


link 未来から過去へ表示(*)  link 過去から未来へ表示

link もっと前
2013年11月27日 >>> 2013年11月14日
link もっと後

2013年11月27日

Scala ArrayBufferのイテレータ

最近Scalaにチャレンジしていますが、イテレータの動きがよくわかりません。

Scala Documentation(リンク)にはtake(n) でイテレータがn要素先に進む、という記述があるのですが、ArrayBufferのイテレータはそうなっていません。たぶん。

下記のコードを使って確かめました。7要素持っているバッファから、2要素、3要素、4要素、とtake(n) していくコードです。val it4 = take(4) は4要素取ろうとしますが、要素が足りず2要素しか取れないことを期待しています。

テストコード

val a = scala.collection.mutable.XXXXXX(0, 1, 2, 3, 4, 5, 6)

val it = a.iterator
val it2 = it.take(2)
val it3 = it.take(3)
val it4 = it.take(4) //実際には2要素しか取れないはず

it2.toList
it3.toList
it4.toList
it.toList

まずはXXXXXXの部分をListBufferにします。結果は期待通りです。

ListBufferのイテレータ
Welcome to Scala version 2.9.2 (OpenJDK Client VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val a = scala.collection.mutable.ListBuffer(0, 1, 2, 3, 4, 5, 6)
a: scala.collection.mutable.ListBuffer[Int] = ListBuffer(0, 1, 2, 3, 4, 5, 6)


scala> val it = a.iterator
it: Iterator[Int] = non-empty iterator

scala> val it2 = it.take(2)
it2: Iterator[Int] = non-empty iterator

scala> val it3 = it.take(3)
it3: Iterator[Int] = non-empty iterator

scala> val it4 = it.take(4)
it4: Iterator[Int] = non-empty iterator


scala> it2.toList
res0: List[Int] = List(0, 1)

scala> it3.toList
res1: List[Int] = List(2, 3, 4)

scala> it4.toList
res2: List[Int] = List(5, 6)

scala> it.toList
res3: List[Int] = List()

次にXXXXXXの部分をArrayBufferにします。take(n) 自体は成功しますが、イテレータは進まずに常に先頭の要素を指すイテレータが返されてしまいます。

ArrayBufferのイテレータ
Welcome to Scala version 2.9.2 (OpenJDK Client VM, Java 1.7.0_25).
Type in expressions to have them evaluated.
Type :help for more information.

scala> val a = scala.collection.mutable.ArrayBuffer(0, 1, 2, 3, 4, 5, 6)
a: scala.collection.mutable.Buffer[Int] = ArrayBuffer(0, 1, 2, 3, 4, 5, 6)


scala> val it = a.iterator
it: Iterator[Int] = non-empty iterator

scala> val it2 = it.take(2)
it2: Iterator[Int] = non-empty iterator

scala> val it3 = it.take(3)
it3: Iterator[Int] = non-empty iterator

scala> val it4 = it.take(4)
it4: Iterator[Int] = non-empty iterator


scala> it2.toList
res0: List[Int] = List(0, 1)

scala> it3.toList
res1: List[Int] = List(0, 1, 2)

scala> it4.toList
res2: List[Int] = List(0, 1, 2, 3)

scala> it.toList
res3: List[Int] = List(0, 1, 2, 3, 4, 5, 6)

IteratorのScala-doc(リンク)を見ると「take呼んだ後のイテレータは再利用すんなボケナス(意訳)」って書いてあるように読めます。

じゃあイテレータを再利用して良いのはどういう場合?next() だけ?不便だなあ…。

編集者:すずき(2013/11/27 20:04)

コメント一覧

  • よしださん(2013/12/02 01:49)
    Scalaどうですか?
    Javaほとんどやったことない&コンパイルが必要(?)ということで敷居が高そうというイメージがあって手をだせていません。
  • すずきさん(2013/12/02 03:16)
    >よしださん
    関数言語+オブジェクト指向、という方向は好きですが、使いこなせていないです。
    特に関数型言語の部分は馴染みがなくて使うのがキツイので、無視してBetter Javaとして使ってます。

    開発環境はIntelliJ IDEA&Scala Pluginを使いましたが、コンパイル環境の設定が良くわかりません…。
    GUIの開発環境が不要なら、Ant(makeのJava版)からもコンパイル可能です。今はAntよりMavenという話も聞きますが、使ったことないのでなんとも言えないです。

    Rubyのirb的な対話環境もあるので、ちょっと試すならそちらの方が良いです。Linuxならyumとかaptとかで簡単に入れられるはず。
  • よしださん(2013/12/03 01:10)
    2年前にコップ本を読んで勉強しようとするも挫折した記憶がよみがえります。
    なんかいい題材があればいいのだけど。
    とりあえずapt-getしてみます。ありがとう!

    やっぱり val いっぱい使わないとメリットがでなかったりするのかしらね。
  • すずきさん(2013/12/03 03:39)
    >よしださん
    私も 1冊目にオライリー「プログラミングScala」を選んでしまって、やっちまった感が満載です。
    今からさらにコップ本を読む気が起きません…。

    >なんかいい題材があればいいのだけど。
    Rubyから移植してみるのはどうでしょう?

    >やっぱり val いっぱい使わないとメリットがでなかったりするのかしらね。
    うーん、頑張ったら速くなるかもしれませんが…。この手の言語や、スクリプト言語に性能は期待してないです。
    とりあえず快適&簡潔に書ければそれで良しです。
open/close この記事にコメントする



2013年11月19日

FacebookのRSS Graffitiアプリ

目次: ブラウザー/メーラー

この日記サイトと、Facebookを連携させるためにFacebookのRSS Graffitiというアプリを使っていたのですが、いつのまにかFacebookのRSS Graffitiが動かなくなっていました…。

どうもこの日記サイトの出力するRSSが悪いようです。色々出力を変えて試してみるとRSS 1.0のdescriptionが長すぎるとRSS Graffitiがエラーを出します。SeaMonkeyで確認しても、descriptionが長い(80列くらい?)とエラーが出ます。

規格ではdescriptionは500バイト以内推奨だったはずなのになあ…?

メモ: 技術系?の話はFacebookから転記しておくことにした。一部、改変、追記あり。

編集者:すずき(2025/06/08 11:54)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2013年11月18日

フィリピンの復興を祈って

日本赤十字社で2013年フィリピン台風被害の救援金を募集(2013年11月11日〜)していたので、1万円ほど寄付してみた。フィリピンの復興に役立つと良いなあ。

クレジットカードが使える上に、1円単位で好きな金額を寄付できます。かなり便利です。

【日本赤十字社】寄付・献血・ボランティア|2013年フィリピン台風救援金

救援金とは?

救援金って何?という疑問への答えは、日本赤十字社のQ&Aコーナーの3つ目
「「義援金」と「救援金」はどう違うのですか?」
に書いてあります。

ざっくり言うと、日赤の被災地での活動資金として使われるのが「救援金」で、被災者の方々に直接届くわけではないとのこと。

【日本赤十字社】寄付・献血・ボランティア|よくあるご質問

メモ: 技術系?の話はFacebookから転記しておくことにした。

編集者:すずき(2014/03/17 00:11)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2013年11月17日

Wi-Fi復活か?

先日(2013年11月2日の日記参照)まで調子が非常に悪かった、ノートPCのWi-Fiですが、いつの間にか症状が改善していました。何故…。

そういえば最近、無線LANアクセスポイント(NEC Aterm WR8700N)のファームウェアをバージョンアップした気がします。

WR8700Nのファームウェア更新内容の説明を見ると「4. 一部のご利用環境での通信の安定性を向上しました。」とありますので、この更新がクリーンヒットだった?かもしれません。

今週はずっとPC買い換えるべきか?と、迷っていたくらいだったので、Wi-Fiの調子が上向いてきて良かった良かった。

編集者:すずき(2013/11/17 02:05)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



2013年11月16日

結婚式

会社の先輩の結婚式(二次会)に参加しました。二次会からだと場の雰囲気が良くわからなくて困りますね…。

本当は披露宴から出たかったのですが、会社というか人事から「研修先は、土曜も出勤あるかも?」などという紛らわしい連絡(※)されたおかげで、参加不能になってしまいました。ありもしない休日出勤ちらつかせて、一体何の嫌がらせだったんだろ?

(※)実際に研修先に行ってみたら、土曜出勤なんて全くなかった。

編集者:すずき(2013/11/17 01:50)

コメント一覧

  • コメントはありません。
open/close この記事にコメントする



link もっと前
2013年11月27日 >>> 2013年11月14日
link もっと後

管理用メニュー

link 記事を新規作成

<2013>
<<<11>>>
-----12
3456789
10111213141516
17181920212223
24252627282930

最近のコメント5件

  • link 26年7月14日
    hdkさん (07/22 08:37)
    「冷却水漏れなんて、修理するまでは補充して...」
  • link 26年1月23日
    すずきさん (01/29 09:48)
    「おおー、そんな昔からなんですね。歴史感じ...」
  • link 26年1月23日
    hdkさん (01/27 19:53)
    「#! はUNIX v8からだったってWi...」
  • link 24年12月9日
    すずきさん (01/18 15:45)
    「Thank you for your i...」
  • link 24年12月9日
    Up2Uさん (01/15 12:57)
    「Hi I also find the p...」

最近の記事20件

  • link 23年5月15日
    すずき (07/22 03:04)
    「[車 - まとめリンク] 目次: 車三菱 FTO GPX '95の話。群馬県へのドライブ1群馬県へのドライブ2将来車を買い替え...」
  • link 26年7月22日
    すずき (07/22 03:04)
    「[ジャガーさんの冷却水漏れの修理見積もり] 目次: 車先週、冷却水がほぼなくなってしまい修理工場にレッカーしたジャガーさんです...」
  • link 26年7月14日
    すずき (07/22 02:37)
    「[ジャガーさんの冷却水漏れ] 目次: 車朝、出勤しようと思ってエンジンをかけたところ冷却水不足と表示されました。わぁ、ついに出...」
  • link 26年7月19日
    すずき (07/20 04:04)
    「[ゲームを買ったら遊びましょう4] 目次: ゲーム前回の振り返り(2025年12月22日の日記参照)から半年経ちました。Swi...」
  • link 21年12月28日
    すずき (07/20 04:03)
    「[ゲーム - まとめリンク] 目次: ゲームNintendo DSを買ったパネルでポンDS最近の朝はパネポンDS聖剣伝説DSチ...」
  • link 26年7月13日
    すずき (07/19 23:33)
    「[Flightradar24のcontributorになる方法] 目次: 自宅サーバーADS-Bを受信できる環境があればFli...」
  • link 23年6月1日
    すずき (07/19 23:31)
    「[自宅サーバー - まとめリンク] 目次: 自宅サーバーこの日記システム、Wikiの話。カウンターをPerlからPHPに移植日...」
  • link 23年9月11日
    すずき (07/15 12:18)
    「[Windows - まとめリンク] 目次: WindowsWindows XPのブリッジ機能colinuxとWindowsの...」
  • link 25年1月31日
    すずき (07/15 12:18)
    「[Windowsの日本語フォントはみな長生き] 目次: WindowsGNOME48からフォントが変わるニュースを見ていて、フ...」
  • link 26年7月11日
    すずき (07/12 01:26)
    「[Timberborn、トロフィーコンプ] 目次: ゲームTimberbornのトロフィーをコンプリートしました。アーリーアク...」
  • link 24年2月7日
    すずき (07/11 13:05)
    「[複数の音声ファイルのラウドネスを統一したい] 目次: PythonPCやデジタル音楽プレーヤーで音楽を聞いていると、曲によっ...」
  • link 26年6月27日
    すずき (07/08 01:45)
    「[ジャガーさんのバンパー修理] 目次: 車以前(2025年11月21日の日記参照)、ジャガーさんの左前をぶつけてバンパーをガリ...」
  • link 26年7月3日
    すずき (07/08 00:42)
    「[ADS-Bを受信して飛行機の位置を見よう] 目次: 自宅サーバー空を飛ぶ飛行機は離陸直後や着陸寸前でもない限り飛んでいる姿は...」
  • link 26年7月1日
    すずき (07/04 02:37)
    「[GPSは世界一正確な時計、その3 - ntpsecとgpsd] 目次: 自宅サーバー以前(2015年5月8日の日記参照)、G...」
  • link 26年6月26日
    すずき (07/03 05:23)
    「[ジャガーさんの不思議なシフト] 目次: 車ジャガーXE(前期型)はシフトがダイヤル型になっていて、P, R, N, D, S...」
  • link 20年2月22日
    すずき (06/26 02:03)
    「[Zephyr - まとめリンク] 目次: Zephyr導入、ブート周りHello! Zephyr OS!!Hello! Ze...」
  • link 26年6月18日
    すずき (06/26 02:02)
    「[ZephyrのOut-of-treeアプリケーションその6 - シリアル出力] 目次: Zephyr前回はシリアルに文字を出...」
  • link 26年6月23日
    すずき (06/26 01:27)
    「[ANA国内線予約サイトが悲惨なことに] 4月くらいにANAの国内線予約サイトが国際線と共通のクラウドシステム(Amadeus...」
  • link 26年6月11日
    すずき (06/26 01:10)
    「[ZephyrのOut-of-treeアプリケーションその5 - OpenOCDとGDBで実行] 目次: Zephyr前回Ze...」
  • link 26年4月29日
    すずき (06/24 01:10)
    「[ぽこあポケモンをクリア] 目次: ゲーム1日だけやって放置していたぽこあポケモンをクリア(=スタッフロールが流れるイベントを...」
link もっとみる

こんてんつ

open/close wiki
open/close Linux JM
open/close Java API

過去の日記

open/close 2002年
open/close 2003年
open/close 2004年
open/close 2005年
open/close 2006年
open/close 2007年
open/close 2008年
open/close 2009年
open/close 2010年
open/close 2011年
open/close 2012年
open/close 2013年
open/close 2014年
open/close 2015年
open/close 2016年
open/close 2017年
open/close 2018年
open/close 2019年
open/close 2020年
open/close 2021年
open/close 2022年
open/close 2023年
open/close 2024年
open/close 2025年
open/close 2026年
open/close 過去日記について

その他の情報

open/close アクセス統計
open/close サーバ一覧
open/close サイトの情報

合計:  counter total
本日:  counter today

link About www2.katsuster.net
RDFファイル RSS 1.0

最終更新: 07/22 08:37