Enum の代わりに union 型を使おうという風潮があるらしい TypeScript v3.4 から使えるconst assertionを用いると、使い勝手を損なわず Enum の代わりに union 型が使えるらしい Enum とは 列挙型とも呼ばれる TS にはあって JS には無いもの、他の言語(C、C#、Java とか)にもある 定数をひとまとめに定義できる enum Card { Clubs, // 0 Diamonds, // 1 Hearts, // 2 Spades, // 3 } const card: Card = Card.Hearts; console.log(card); // 2 上記のように値には連番が振られる 意味のある分かりやすい値をもたせたい場合は、文字列や任意の数値を設定することもできる enum Card { Clubs = "clubs", D
フロントエンドエンジニアの今村です。TypeScriptではenumを使わずunion型を使いましょう、という話を書きます。 モチベーション 何を今さら、と思う方もいるかもしれません。 TypeScriptのunion型はenum的なものを表現可能であり、基本的にenumよりもunion型を使うべき、という意識を持っているTypeScriptプログラマーはすでに少なからずいるのではないかと思います。しかし、ではenumの使用はいかなる場合も避けるべきなのか、そうでないとしたらどのような基準でenumとunion型を使い分けるべきなのか、といった点について、広く合意の取れたガイドラインはなさそうです(少なくとも私は知りません)。この結果、コードレビューなどで少しやりづらさを感じることがあったので、白黒つけてしまいたいという気持ちからこのブログを書いています。 結論としては、enumは全面的に
Important: In this tutorial, you’ll learn how to use the enums without iota in the first section — After that, you’ll also learn about iota and the other helper tools as well after the first section. So, learn to crawl first, then walk then run! What is an Enum? ★An enum groups related constants together in one type. Example enums:Timezones: EST, CST…T-shirt Sizes: Small, Medium, LargeServer Statu
巨大なtableへのalter tableが必要になったのだけど、enumへのalterって確か最適化してくれたんじゃなかったっけな、ということで、一応確認のため検証してみる 次のschemaを用意します。 CREATE TABLE `enum_test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `type` enum('foo','bar') DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=105135 DEFAULT CHARSET=utf8 次のようなデータを大量にINSERTするプログラムを書き、入れておきます。 use strict; use warnings; use DBI; my $dbh = DBI->connect('dbi:mysql:test;',
package main import ( "log" ) func init() { log.SetFlags(log.Lshortfile) } type Indexing int func (i Indexing) String() string { switch i { case WITH: return "WITH" case WITHOUT: return "WITHOUT" case NEVER: return "NEVER" } log.Fatal("can't be here") return "" } const ( WITH Indexing = iota WITHOUT NEVER ) func main() { log.Println(WITH, WITHOUT, NEVER) } Register as a new user and use Qiita more
今年3月にリリース予定の Python 3.4 から、 enum が追加されます。 (ドキュメント) Python 2.4 から使えるバックポートが開発されており、 pip install enum34 でインストールできます。 enum が欲しい理由 今までも例えばこんな方法で定数を定義していました。 しかし、この方法には以下のような問題点があります。 デバッグ時など、ただの整数値が表示され、意味が分かりにくい 値から名前を引く方法を自作しないといけない 列挙する方法も自作しないといけない アドホックに解決したり、ライブラリがあったりしたんですが、これくらい標準ライブラリに欲しいですよね。で、標準ライブラリに入ったんだから、使いましょう。 シンプルな使い方 namedtuple と同じく、最初に形名、次に名前の一覧のリスト、あるいは空白区切りの文字列を渡すと、勝手に1から順番に値が割り振
An enumeration is a set of symbolic names (members) bound to unique, constant values. Within an enumeration, the members can be compared by identity, and the enumeration itself can be iterated over. from enum import Enum class Fruit(Enum): apple = 1 banana = 2 orange = 3 list(Fruit) # [<Fruit.apple: 1>, <Fruit.banana: 2>, <Fruit.orange: 3>] len(Fruit) # 3 Fruit.banana # <Fruit.banana: 2> Fruit[‘ba
列挙型(enum)は、JDK1.5で導入された、一連の値を定義する文法。[2006-07-26] 一番単純な定義方法はC言語の列挙型に似ているが、C言語と違って実態はクラス(と、不変オブジェクト)。 enumはenumerate(イニュームレイトあるいはイヌームレイト)の略なので、発音としては「イニューム」が正しそうだが、自分は「イナム」「エナム」と呼んでいる。 最も単純な定義方法 enum 列挙名 { 列挙子, 列挙子, … } 列挙名は、クラス名(やインターフェース名など)と同様。 (したがって、publicの付いたenumの列挙名は、ソースファイル名と同じでなければならない。また、publicの付いたenumはソースファイル内に1つしか定義できない) 列挙子(enum定数)は、フィールド名の定数(クラス内のstatic final変数)と同様。 (したがって、アルファベット大文字を使
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く