Array

Rubyの場合、配列は組み込みライブラリのArrayクラスになっている。

class Array (Ruby 2.6.0)
Ruby入門 - 配列・ハッシュ・範囲

まず、初期化をしないといけない。

こんな感じで、10から30までの3つの要素を持つ配列aryになる。

1番目をprintで出力。

ダブルクォート("")の中で変数や配列の要素を展開する場合は、"#{"と"}"で囲む。

配列ごと展開もできる。

$ vi Array.rb
$ ruby Array.rb 
20
ary[1] = 20
ary = [10, 20, 30]
$

他にもいろいろな機能や使い方があるが、今回はここまで。

Sample/ruby/Array/Array/src/Array at master · bg1bgst333/Sample · GitHub

配列

Perlで配列を扱う。

perldata - Perl のデータ型 - perldoc.jp
とほほのperl入門(概要編)

変数と同様に各要素に値を入れる。

printで、

添字が1の要素だけ出力する。

ちなみに、Perlではダブルクォート("")の中でも変数を展開できるので、

このように出力することもできる。

配列全体を扱う場合は、$じゃなくて@をつける。

こうすると、各要素がスペース区切りで列挙される。

実行すると、

$ vi array.pl
$ perl array.pl 
20
ary[1] = 20
ary = 10 20 30
$

最初は添字が1の要素、次に装飾文字列を入れて、最後に配列全体を出力。

Sample/perl/array/array/src/array at master · bg1bgst333/Sample · GitHub

Activity.getActionBar

アクションバーを弄るにはActivity.getActionBarでActionBarオブジェクトを取得する。
・・・というのは以前やったとおもう。

Activity  |  Android Developers

ワークスペース
ワークスペース

こんなワークスペースで、

プロジェクト作成
プロジェクト作成

プロジェクト作成。

4.0.3
4.0.3

こんなので、

設定
設定

こんなので、

アイコン
アイコン

こんなので、

空のプロジェクト
空のプロジェクト

こんなので、

MainActivity
MainActivity

こんなので、作成。
MainActivity.javaは、

getActionBar().getTitle()という感じでアクションバーのタイトルを一気に取りに行く。

デバッガ実行すると、

Android Application
Android Application

こうなるのでAndroid Application。

getActionBar().getTitle()がnull
getActionBar().getTitle()がnull

getActionBar().getTitle()がnull・・・。
ActionBarオブジェクトはnullじゃなさそうなので、それは取れている。
ActionBarオブジェクトのgetTitleがnullなのは別の原因がありそう。

[Android]ActionBarのTitleをJavaから変更する - Qiita

これはsetTitleの場合だけど、これも同じ・・・。
ActivityのsetTitleやgetTitleが正解の模様・・・。
なぜこうなってしまうのかという件は後で・・・。

Sample/android/Activity/getActionBar/src/Activity at master · bg1bgst333/Sample · GitHub

Window.addWindowListener

以前、WindowListenerの回で、ウィンドウの閉じるなどのイベント処理は、WindowListenerオブジェクトをaddWindowListenerでFrameオブジェクトに追加することで実現できた。

Window (Java Platform SE 6)

FrameはWindowの派生クラスであり、addWindowListenerはWindowクラスのメソッド。
今回はWindowListenerオブジェクトを作らずにやってみる。

ワークスペース
ワークスペース

ワークスペースはここ。

Java プロジェクト
Java プロジェクト

Java プロジェクトから、

Window
Window

Windowプロジェクトで、

設定
設定

このまま。

パースペクティブ
パースペクティブ

パースペクティブは「はい」で、

クラスを追加
クラスを追加

クラスを追加。

MainClass
MainClass

MainClassは、

このように書く。

クラスを追加
クラスを追加

もう一つ追加。

MainFrame
MainFrame

MainFrame。

実装されていないメソッドの追加
実装されていないメソッドの追加

implementsでWindowListenerを指定すると、上記のポップアップが出てくるので、「実装されていないメソッドの追加」をクリックすると、

自動でメソッド追加されるので、前回のような処理を書く。

addWindowListenerに自身(this)を指定するのを忘れずに。このクラス自身にリスナーがあるからね。

実行ボタン
実行ボタン

実行すると、

ウィンドウ
ウィンドウ

ウィンドウが出て、閉じるボタンで閉じれる。

addWindowListenerはWindowクラス
addWindowListenerはWindowクラス

この説明にもあるけど、addWindowListenerはWindowクラス。

Sample/java/Window/addWindowListener/src/Window at master · bg1bgst333/Sample · GitHub

Application.Shutdown

WPFの場合、Application.Shutdownでアプリケーションを終了できる模様。

Application.Shutdown Method (System.Windows) | Microsoft Docs

WPF
WPF

WPFで、"Application_"にして作成。

プロジェクト作成
プロジェクト作成

こんな風に作成したら、

Button
Button

Buttonを選択し、

貼り付け
貼り付け

貼り付ける。
で、ダブルクリックでイベントハンドラが出るのだが、その前にApp.xaml.csを見る。

App.xaml.cs
App.xaml.cs

AppはApplicationの派生クラス。
WPFのSystem.WindowsのApplication.Shutdownはオブジェクトメソッド。
一方、前回のWinFormsのSystem.Windows.FormsのApplication.Exitはスタティックメソッド。
なので、

Shutdownはスタティックメソッドでない
Shutdownはスタティックメソッドでない

インテリセンスがスクリーンショットに出ないのでわかりにくいが、"App.Sh"としても出てこない。
スタティックメソッドではないので。
そこで、

Application.Current Property (System.Windows) | Microsoft Docs
C# WPFアプリケーションの終了方法あれこれ - 結果だけでなく過程も見てください
WPFアプリケーション再起動(力技) - Qiita

Application.Currentプロパティで現在のApplicationオブジェクトを取得し、そこからShutdownを呼び出す。

こう呼べる。
(System.WindowsのApplicationクラスや、Application.Currentが何たるかは、AppDomainについて調べないといけないみたいだが、難しそうなのでそれは後で。)

これで実行すると、

実行時
実行時

このように表示される。
そして、button1を押すと、アプリケーションが終了する。

Sample/wpf/Application/Shutdown/src/Application_ at master · bg1bgst333/Sample · GitHub

Application.Exit

Application.Exitは、アプリケーション(メッセージループ)を終了させる。

Application.Exit Method (System.Windows.Forms) | Microsoft Docs

Application_
Application_

[Windows アプリケーション]でApplicationだとnamespaceが被るので、Application_にして、

プロジェクト作成
プロジェクト作成

プロジェクト作成したら、

Button
Button

Buttonを選択して、

貼り付ける
貼り付ける

貼り付ける。
button1をダブルクリックすると、イベントハンドラに飛ぶので、

button1がClickされたら、Application.Exitでアプリケーションが終了するようにする。
実行すると、

実行時
実行時

これが出てくるので、button1を押すと、ウィンドウが閉じてアプリケーションが終了する・・・というより、アプリケーションの終了が先にあり、それを受けてウィンドウがやむなく閉じている感じかなあ・・・。

Sample/dotnet/Application/Exit/src/Application_ at master · bg1bgst333/Sample · GitHub

partial

partialを使うことで、クラスの定義を複数の箇所に分割できる。

partial 型 - C# リファレンス | Microsoft Docs

Windows アプリケーション
Windows アプリケーション

Windows アプリケーションで作成。

新しい項目
新しい項目

新しい項目として、

Class1_A.cs

コードファイルでClass1_A.csを追加。

partialでクラスを定義。今回はデータメンバだけ書いておく。

新しい項目
新しい項目

次に、

Class1_B.cs
Class1_B.cs

Class1_B.csを追加し、

今度はメソッドだけ。

Program.csで、

オブジェクトclass1を作成し、Addで渡した数値を加算し、GetResultで結果を得て、表示。

加算前
加算前

加算前はこうだが、

加算後
加算後

加算後はこう。
こんな風に分割できるのだが、FormとEventHandlerの関係もそんな感じ・・・。

加算後に、

Form
Form

こんな風に出てくるけど。

コードの表示
コードの表示

いったん実行を終了し、メニューのコードの表示で、

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;

namespace partial
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
    }
}

こうなってるので、

デザイナの表示
デザイナの表示

デザイナの表示で、

Button
Button

Buttonを選択。

貼り付け
貼り付け

貼り付けて、ダブルクリックすると、

ハンドラ
ハンドラ

イベントハンドラが追加される。

で、こう書く。

実行すると、先ほどの加算結果のメッセージボックスの後に、

Form1
Form1

これが現われて、button1を押すと、

Clicked!
Clicked!

こうなる。

このハンドラの仕組みのカギを握るのが、

Form1.Designer.cs
Form1.Designer.cs

Form1.Designer.cs。
これをクリックしてみると、

Form1のpartial
Form1のpartial

Form1のpartialが定義されている。
"Windows フォーム デザイナで生成されたコード"というところを開くと、

button1_Clickをthis.button1.Clickにイベントハンドラ追加する処理が、このように書いているのである。
これもpartialの成せる業。

Sample/cs/partial/partial/src/partial at master · bg1bgst333/Sample · GitHub