あかすくぱるふぇ

同人サークル「あかすくぱるふぇ」のブログです。

2020年01月

import java.awt.*
import javax.swing.*

fun main() {
EventQueue.invokeLater {
val frame = JFrame()
frame.setSize(300, 200)
frame.defaultCloseOperation = JFrame.EXIT_ON_CLOSE
frame.isVisible = true

val button = JButton("button")
button.addActionListener { JOptionPane.showMessageDialog(null, "Hello!") }

frame.layout = FlowLayout()
frame.add(button)
}
}

import java.awt.*
import javax.swing.*

fun main() {
EventQueue.invokeLater { JButtonTest() }
}

class JButtonTest : JFrame() {
init {
setSize(300, 200)
defaultCloseOperation = EXIT_ON_CLOSE
isVisible = true

val button = JButton("button")
button.addActionListener { JOptionPane.showMessageDialog(null, "Hello!") }

layout = FlowLayout()
add(button)
}
}

・fun func_name(arg: Double) : Int
func_name : 関数名
arg : 引数名
Double : 引数の型
Int : 返り値の型

fun func_name(arg: Double) : Int
{
    return x + y
}
は、fun func_name(arg: Double) : Int = x + y
という風に書くこともできる。
さらに、返り値の型は省略可能。

・関数オブジェクト
関数オブジェクトを別関数の引数に指定
fun func_name(cal: (Double) -> Int)
cal : 引数名(関数オブジェクト)
(Double) -> Int : 関数オブジェクトの型(Doubleを引数にとり、Intを返す関数オブジェクト)

val p = ::func_obj_name
と書くと関数オブジェクトを変数に格納できる
func_obj_nameは関数オブジェクトにしたい(予め定義された)関数名

・無名関数
val p = fun(x: Double, y: Double) : Double = x + y
fun : 無名関数であるというキーワード
返り値の型は省略できるし、=の代わりに{}内に記述してもよい。

val p: (Double, Double) -> Double = fun(x, y) = x + y
と書くこともできる。
これは、pの型が(Double, Double) -> Double型であり、
 それはfun(x, y) { return x + y }という定義ですよ、という意味。

・ラムダ式
val p: (Double, Double) -> Double = {x, y -> x + y}
と書くこともできる。
{x, y -> x + y}の部分がラムダ式。
->の左側が引数、右側が返り値、というだけ。

関数オブジェクトを関数の引数として渡す場合もラムダ式を使える。
printResult({x, y -> x+y})
また、
printResult(){x, y -> x+y}
printResult{x, y -> x+y}
と書いてもよい。

・List
list.filter{p: Person -> p.age==5}
Person型のListの要素の年齢が5かどうかを返す関数を使って、返り値がtrueの要素だけ残す
引数の型Personは省略可能

list.maxBy{p: Person -> p.age}
Person型のListの要素の年齢を返す関数を使って、年齢が最大の要素を選ぶ




↑このページのトップヘ