• #23 楼 @darkbaby123Protocols 好像也要一条条地写每一个判断的 function, 就是不想一条条地写所以用一个循环,我这里纠结的地方在于

    如果不在循环里写,是可以用 宏创建一个 function 的:

    defmodule Mymacro do
      defmacro warp(type) do
        quote do
          def typeof(x) when unquote(:"is_#{type}")(x), do: unquote(type)
        end
      end
    end
    
    defmodule Util do
      import Mymacro
      warp("function")  
    end
    

    写在循环里就不行,就很纳闷:

    1. 到底有什么不同?
    2. 怎样动态地用宏创建 function?
  • @chenge 实现这样的功能,只是用宏来写循环了

    defmodule Util do
      def typeof(x) when is_function(x), do: "function"
      def typeof(x) when is_nil(x), do: "nil"
      def typeof(x) when is_integer(x), do: "integer"
      ...
    end
    
    Util.typeof 999
    #=> "integer"
    
    
  • #18 楼 @chenge 实现一个对象类型检查的 helper

  • 我想用 Macro 写个 typeof 的函数,但总是报错, 这段代码要怎么改。。 哎特 all

    defmodule Mymacro do
      defmacro warp(type) do
        quote do
          def typeof(x) when unquote(:"is_#{type}")(x), do: unquote(type)
        end
      end
    end
    
    defmodule Util do
      import Mymacro
      types = ~w[function nil integer binary bitstring list map float atom tuple pid port reference]
      for type <- types do
        warp(type)
      end
    end
    
  • Ember Data 概述 at 2015年12月09日

    lz 已经横屏了

  • 是时候使用 Mithril.js 了 at 2015年10月02日

    @nong 不知道为什么,基本不认同你所有观点 感觉写 ruby 的不用 coffeescript 就不会写 js 了

  • 后端 + 会点 js css 就叫全栈了?