Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Emulates Go's iota.
branch: master

Fetching latest commit…

Cannot retrieve the latest commit at this time

Failed to load latest commit information.
lib
test
README.rdoc
iota-1.0.0.gem
iota.gemspec

README.rdoc

Summary

Iota is a Ruby module that emulates the iota keyword(?) from Google's Go programming language. Here is the example from golang.org/doc/effective_go.html:

type ByteSize float64
const (
  _ = iota;	// ignore first value by assigning to blank identifier
  KB ByteSize = 1<<(10*iota);
  MB;
  GB;
  TB;
  PB;
  YB;
)

The equivalent Ruby Iota code is:

require 'iota'
include Iota
set_iota 1
iota(%w(KB MB GB TB PB YB)) do |i|
  1 << i * 10
end

MarkCC gives a simpler example:

type Color int; const ( RED Color = iota; ORANGE = iota; YELLOW = iota;
GREEN = iota; BLUE = iota; INDIGO = iota; VIOLET = iota; )

And the Ruby Iota code:

RED = iota; ORANGE = iota; YELLOW = iota; GREEN = iota; BLUE = iota; INDIGO = iota; VIOLET = iota

OK, but that is painfully inefficient. Let's go back to the array notation:

iota %w(RED ORANGE YELLOW GREEN BLUE INDIGO VIOLET)

Aaand… that's all. This is of course one of the least innovative things about the Go language, but we can perhaps strive to implement more.

Something went wrong with that request. Please try again.