在python和coffeescript中将变量插入到字符串中

时间:2015-05-21 08:50:19

标签: python string dictionary coffeescript namespaces

在python中:

template<class T>
class Container {
    template<class T1> friend class Accessor;
    std::vector<T> _data;
};

template<class T>
class Accessor {
public:
    void doSomething(Container<T> *c) {
        std::cout << c->_data.size() << std::endl;
    }
};

template<class T, template<typename> class CustomAccessor = Accessor>
struct MyBase {
    typedef Container<T> MyContainer;
    typedef CustomAccessor<T> MyAccessor;
};

template<class T, template<typename> class First = Accessor, template<typename> class Second = Accessor>
class Composite {
public:
    typedef First<T> MyFirst;
    typedef Second<T> MySecond;

    void doSomething(Container<T> *c) {
        MyFirst a;
        a.doSomething(c);

        MySecond b;
        b.doSomething(c);
    }
};
  

facebook.com/user/83426347

在咖啡脚本中我有同样的道理:

namespace = { 'host': 'facebook.com', 'user': '{somehost}/user/83426347' }
namespace['user'].format(somehost=namespace['host'])

我是CS的新手,那么如何处理与pythons相同的行为?

2 个答案:

答案 0 :(得分:1)

的Python

language = "Python"
greet = "I love %s" % language

的CoffeeScript

language = "Coffescript"
greet = "I love #{language}"

答案 1 :(得分:1)

older answer

String.prototype.format = ->
  args = arguments
  return this.replace /{(\d+)}/g, (match, number) ->
    return if typeof args[number] isnt 'undefined' then args[number] else match

然后你可以做类似的事情:

namespace=
    host: 'facebook.com'
    user: '{0}/user/42342342'
namespace.user = namespace.user.format namespace.host