【Flask】環境設定からhelloWorldまで
【Scala】環境設定からScala言語入門
・環境構築
・JDKインストール(詳しい説明は割愛)
・Scalaインストール
https://www.scala-lang.org/download/
・IDE
Configure⇒Plugins⇒BrowseRepositoriesで「scala」を検索してInstallする。
IntelliJを再起動したらScalaの新規プロジェクトを作成できるようになる。
・Hello, World!
package scala
object HelloWorld{
def main(args: Array[String]): Unit ={
println("Hello, world!")
}
}
右クリックしてRun
結果が出力される。
・基本文法
・ソースファイル名:*.scala
・小文字と大文字が区別される。
・クラスの頭文字が大文字。
・クラス名がファイル名と一致させる。(推奨)
・メソッドの頭文字が小文字。
・キーワード(50個)
abstract | case | catch | class |
def | do | else | extends |
false | final | finally | for |
forSome | if | implicit | import |
lazy | match | new | null |
object | override | package | private |
protected | return | sealed | super |
this | throw | trait | try |
true | type | val | var |
while | with | yield | |
- | : | = | => |
<- | <: | <% | >: |
# | @ |
・データ型
・Byte
・Short
・Int
・Long
・Float
・Double
・Char
・String
・Boolean
・Unit:値無しを表す。voidと同等。
・Null
・Nothing:他クラスの子クラス。
・Any:他クラスの親クラス。
・AnyRef:レファレンスクラスの親クラス。
・リテラル
・int型:数字、数字L
・float型:小数、小数f
・bool型:true/false
・Symbol:'シンボル
・Char:'文字
・String:"文字列
・変数
var myVar : String = "Foo"
・定数
val myVal : String = "Bar"
・アクセス修飾子
・private:同じパッケージ内でアクセス可能。
・protected:同じクラス(子クラス含む)からアクセス可能。
・public:他のパッケージからもアクセス可能。
・フローコントロール
・if...else
・while/do...while/for
・メソッド
def functionName([refList]) : [return type] = {
function body
return[expression]
}
・文字列
・配列
・コレクション
・クラス
・Trait(特徴)
Javaのインターフェース+抽象クラスに相当する概念。
例)
trait Equal{
def isEqual(x: Any): Boolean
def isNotEqual(x: Any): Boolean = !isEqual(x)
}
・match
例)
def matchTest(x: Any): Any = x match {
case 1 => "one"
case "two" => 2
case y: Int => "scala.Int"
case _ => "many"
}
・正規表現
・エラーハンドリング
・Extractor
【Go】環境設定からGo言語入門
・インストール
Getting Started - The Go Programming Language
インストールが完了すると、Pathが通っている状態になる為、別途個別設定は不要。
・IDE設定
Jetbrainなど他にも色々あるけど、今回は一旦Vidual Studio Codeを使うことにする。
・Hello World!
VSCODEから実行するとOUTPUTから実行結果が表示される。
補足)
Encodingを設定しないとOUTPUTでの出力が文字化けることがある為、
File⇒Preferences⇒Settingsにて設定をしておく。
・基本概念
・ソースファイル名:*.go
・パッケージ:package pkgName
・インポート:import "pkgName"
頭文字が大文字⇒Public:他のパッケージから参照可能。
頭文字が小文字⇒Private:他のパッケージから参照不可。
・定数:const
・変数:var
・型:type
・bool
・int/int8/int16/int32/int64
・uint/uint8/uint16/uint32/uint64
・float32/float64
・complex64/complex128
・フローコントロール
・if-else
・switch
・for
・goto
・関数
・基本
func functionName(a typeA, b typeB) (rt1 typeRt1, rt2 typeRt2)
init関数は、一つのpkgの中で最初に実行される。
・defer
・clousure
・Array/Slice
・Map
・package
・struct/method
・interface/reflection
・ファイルアクセス
・エラーハンドリング
・goroutine/channel
【Kotlin】5回目 言語基礎(フローコントロール)
目次
①if文
②when文
③forループ
④whileループ
①if文
// Traditional usage var max = a if (a < b) max = b // With else var max: Int if (a > b) { max = a } else { max = b } // 式として利用できる。 val max = if (a > b) a else b
②when文
JavaのSwitch-case文と同じ様な使い方。
when (x) { 1 -> print("x == 1") 2 -> print("x == 2") else -> { // Note the block print("x is neither 1 nor 2") } }
③forループ
式として使える。
for (item in collection) print(item)
通常はブロックで書く。
for (item: Int in ints) { // ... }
④whileループ
Javaと一緒。
while (x > 0) { x-- } do { val y = retrieveData() } while (y != null) // y is visible here!
【Kotlin】4回目 言語基礎(パッケージ)
目次
①デフォルトインポート
②インポート
①デフォルトインポート
以下パッケージはKotlinでデフォルトでインポートされる。
kotlin.*
kotlin.annotation.*
kotlin.collections.*
kotlin.comparisons.* (since 1.1)
kotlin.io.*
kotlin.ranges.*
kotlin.sequences.*
kotlin.text.*
②インポート
Javaと同じ。
import foo.Bar // Bar is now accessible without qualification import foo.* // everything in 'foo' becomes accessible import bar.Bar as bBar // bBar stands for 'bar.Bar'
【Kotlin】3回目 言語基礎(データ型)
目次
①number
②character
③boolean
④String
⑤Array
①数字型(number)
以下数字型がサポートされる。
・Double 64
・Float 32
・Long 64
・Int 32
・Short 16
・Byte 8
アンダースコアで可読性を向上させることができる。
val oneMillion = 1_000_000 val creditCardNumber = 1234_5678_9012_3456L val socialSecurityNumber = 999_99_9999L val hexBytes = 0xFF_EC_DE_5E val bytes = 0b11010010_01101001_10010100_10010010
②文字型(char)
シングルクォーテーションで囲む。
③真偽値(boolean)
trueまたはfalseの2つの値がある。
④文字列(String)
・改行を含む文字列はトリプルクォーテーション(""")で定義できる。
例)
val text = """ for (c in "foo") print(c) """
⑤配列(Array)
Arrayクラスを使って配列を扱う。
【Kotlin】2回目 言語基礎(基本文法)
目次
①定義
②特徴
③基本文法
④参考
②特徴
・簡潔
POJOクラスを一行で書いちゃう。
例)
data class Customer(val name: String, val email: String, val company: String)
・Null安全
NullPointerExceptionを排除すべく、変数にタイプアノテーションを付けるか、初期化する必要がある。
例)
var output: String output = null // Compilation error:This variable must either have a type annotation or be initialized
・操作可換性ある
JavaまたはJavaScriptで書いたコードを実行可能。
例)Java
import io.reactivex.Flowable import io.reactivex.schedulers.Schedulers Flowable .fromCallable { Thread.sleep(1000) // imitate expensive computation "Done" } .subscribeOn(Schedulers.io()) .observeOn(Schedulers.single()) .subscribe(::println, Throwable::printStackTrace)
import kotlin.browser.window fun onLoad() { window.document.body!!.innerHTML += "<br/>Hello, Kotlin!" }
③基本文法
・パッケージ
package my.demo import java.util.*
・関数
//Int型パラメータ、Int型戻り値 fun sum(a: Int, b: Int): Int { return a + b } //Unit型戻り値(voidと同じ)。省略してもOK。 fun sum(a: Int, b: Int): Unit { println("sum of $a and $b is ${a + b}") }
・変数
read-onlyのローカル変数。
val a: Int = 1 // immediate assignment val b = 2 // `Int` type is inferred val c: Int // Type required when no initializer is provided c = 3 // deferred assignment
ミュータブルな変数。
var x = 5 // `Int` type is inferred x += 1
・コメント(Javaと一緒)
・String templates
var a = 1 // simple name in template: val s1 = "a is $a" a = 2 // arbitrary expression in template: val s2 = "${s1.replace("is", "was")}, but now is $a"
・条件式
・ループ(Javaと一緒)
・レンジ
val x = 10 val y = 9 if (x in 1..y+1) { println("fits in range") }
・コレクション(Javaと一緒)
・クラス
val rectangle = Rectangle(5.0, 2.0) //'new'キーワードは不要 val triangle = Triangle(3.0, 4.0, 5.0)