私の担当者では、関数を持つ1つのファイルからnsをロードしましたparse
。したがって(use 'demo.one)
、replに入力すると正常に動作します。
これで、同じ名前の関数を持つ別のnsができました。この`(use' demo.two)と入力すると、エラーが発生します。
両方のnsで関数名が衝突するのを防ぐにはどうすればよいですか?上記では、2番目のnsからの関数のみを使用したいと思います。
ありがとう
私の担当者では、関数を持つ1つのファイルからnsをロードしましたparse
。したがって(use 'demo.one)
、replに入力すると正常に動作します。
これで、同じ名前の関数を持つ別のnsができました。この`(use' demo.two)と入力すると、エラーが発生します。
両方のnsで関数名が衝突するのを防ぐにはどうすればよいですか?上記では、2番目のnsからの関数のみを使用したいと思います。
ありがとう
require
名前空間をingしてから、関数呼び出しを完全に修飾することで、衝突を回避できます。
例えば
(require 'demo.two)
(demo.two/parse "foo")
名前空間をエイリアスする方法もありますrequire
。
:as
で使用できます:require
(ns your.namespace
(:require [demo.one :as one])
(:require [demo.two :as two]))
(one/parse "foo") ; use the namespace demo.one parse function
(two/parse "foo") ; use the namespace demo.two parse function