๋จผ์ ์ ์ ํ ์ถ์์ ํ๋ผ๋ฏธ์ค ์์์ ๋ง์ ์์ ๋ถํ๋๋ฆฝ๋๋ค! ํ๋ฅญํ ์ผ!
์ง๊ธ ์ฝ์์ ํ ์คํธํ๊ณ ์๋๋ฐ ๋ฌธ์ ๊ฐ ๋ฐ์ํฉ๋๋ค.
์ด๋ค ๊ฒฝ์ฐ์๋ ๋ด๊ฐ ํ ๋
var evaluationResults = engine.Evaluate("return Promise.all(someArray)").UnwrapIfPromise().ToObject();
,
someArray
์๋ ํ๋ผ๋ฏธ์ค๊ฐ ์ ํ ํฌํจ๋์ด ์์ง ์์ง๋ง _one_ ๊ฐ์ฒด, ์ฆ .Net Dictionary<string, object>
๋ง ํฌํจํฉ๋๋ค.
evaluationResults
์ ๋จ์ผ ์์๊ฐ ์๋ ๋ฐฐ์ด ๋์ ๋ฐฐ์ด ๋ด์์ ์ฌ์ ์ KeyValuePair<string, object>
๋ฐฐ์ด์ ์ป์ต๋๋ค.
Dictionary<string, object>
์ ์ธ์คํด์ค ๋์ ์ ํด๋น ๋ฐฐ์ด์ ๊ฐ๋จํ ๋จ์ผ JS ๊ฐ์ฒด๋ฅผ ๋ฃ์ผ๋ฉด ์์๋๋ก ์๋ํฉ๋๋ค.
someArray
์ true
์ ๊ฐ์ ์ถ๊ฐ ์์๋ฅผ ์ถ๊ฐํ๋ฉด ๋งค๋ ฅ์ฒ๋ผ ์๋ํฉ๋๋ค.
๋ณด๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์กฐ์ฌ๋ฅผ ๋ ์ฝ๊ฒ ํ ์ ์๋๋ก ์คํจํ ๋จ์ ํ ์คํธ ์ฌ๋ก๋ฅผ ์์ฑํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ณด๊ณ ํด ์ฃผ์ ์ ๊ฐ์ฌํฉ๋๋ค. ์กฐ์ฌ๋ฅผ ๋ ์ฝ๊ฒ ํ ์ ์๋๋ก ์คํจํ ๋จ์ ํ ์คํธ ์ฌ๋ก๋ฅผ ์์ฑํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ฌผ๋ก ์ ๋๋ค .
๋์์ด ๋๊ธฐ๋ฅผ ๋ฐ๋ผ๋ฉฐ ํ๋ฅญํ ์์ ์ ๊ฐ์ฌ๋๋ฆฝ๋๋ค.
@shestakov ์ด๊ฒ์ ์ฝ๊ฐ ์ด์ ํฉ๋๋ค. ํ ์คํธ ์ฌ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ค์ ์ ๋ง๋ค์์ง๋ง ์๋ํฉ๋๊น?
@shestakov ์ด๊ฒ์ ์ฝ๊ฐ ์ด์ ํฉ๋๋ค. ํ ์คํธ ์ฌ๋ก๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ๊ธฐ์ค์ ์ ๋ง๋ค์์ง๋ง ์๋ํฉ๋๊น?
@lahma ์ฃ์กํฉ๋๋ค. ๋๋ ์์๋ก ๋ช ๊ฐ์ง _passing_ ํ ์คํธ๋ฅผ ๋ง๋ค์์ต๋๋ค. ์ฌ๊ธฐ ์์ ๋จ ํ๋์ ์คํจํ ํ ์คํธ๋ก ๊ต์ฒดํ์ต๋๋ค.
๊ฐ์ฌํฉ๋๋ค. https://github.com/sebastienros/jint/pull/911 ์์ ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
๊ฐ์ฌํฉ๋๋ค. #911์ด ์ด ๋ฌธ์ ๋ฅผ ํด๊ฒฐํด์ผ ํฉ๋๋ค.
@lamhma ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!
์ถ๊ฐํ ํด๊ฒฐ ๋ฐฉ๋ฒ์ ํ์ธํ์ต๋๋ค.
๊ทธ ํด๋ฆฌ์คํฑ( one , two )์ด ์กด์ฌํ๋ ์ด์ ๋ฅผ ๊ฐ๋จํ(๊ฐ๋จํ ์ค๋ช ํ ์ ์๋ค๋ฉด) ์ค๋ช ํด ์ฃผ์๊ฒ ์ต๋๊น?
๋ค์์๋ ๋ ๋์์ด ๋ ์ ์์ ๊ฒ ๊ฐ์์.
new Array(myClrObject)
๋ฅผ ํธ์ถํ ์ ์๊ณ ๋๋๋ก ๊ฐ ์ด๊ฑฐ๋ก ๋ณํํด์ผ ํ๋ฏ๋ก ์ํธ ์ด์ฉ์ฑ์ ์ํ ๊ฒ์
๋๋ค. ๋ค์์ ์ด ๊ฒฝ๋ก์ ํด๋นํ๋ ํ
์คํธ ์ฌ๋ก์
๋๋ค.
public void ArrayFromShouldConvertIEnumerable()
{
var enumerable = new []
{
new Person {Name = "Mike"},
new Person {Name = "Mika"}
}.Select(x => x);
_engine.SetValue("a", enumerable);
RunTest(@"
var arr = new Array(a);
assert(arr.length === 2);
assert(arr[0].Name === 'Mike');
assert(arr[1].Name === 'Mika');
");
RunTest(@"
var arr = Array.from(a);
assert(arr.length === 2);
assert(arr[0].Name === 'Mike');
assert(arr[1].Name === 'Mika');
");
}
์ผ๋ฐ์ ์ผ๋ก ์์ง ๋ด๋ถ์์ ์ด๋ค ์ข ๋ฅ์ ๋ฐฐ์ด์ ์์ฑํด์ผ ํ๋์ง ์๋ฉด ์ฌ๋ฌผ์ ๋ฒ์ญํ๊ณ JS ์ฌ์์ ๋ฐ๋ฅด๋ ๊ณต๊ฐ API ์ฌ์ฉ์ ๊ฑด๋๋ธ ์ ์์ต๋๋ค. CLR interop์ ์ผ๋ฐ์ ์ผ๋ก ๋ฏน์ค์ ์ฝ๊ฐ์ ์ถ๊ฐ ํฅ์ ๋ฃ๋ฅผ ์ถ๊ฐํ๊ณ ์ผ๋ฐ ๋ ผ๋ฆฌ/์ฌ์์์ ์ฝ๊ฐ์ ํธ์ฐจ๋ฅผ ์ผ์ผํต๋๋ค.
@lahma ๋ ArrayConstructor.Construct ๋ฅผ ์ดํด๋ณด์์ต๋๋ค. ๋ฒ๊ทธ๊ฐ ๋ ๊น์ ๋ฌธ์ ๋ฅผ ๋ฐ๊ฒฌํ ๊ฒ ๊ฐ์ต๋๋ค.
ํ์ ์ฌ์
์๋ฏธ๊ฐ ์์ต๋๋ค. ๋๊ตฐ๊ฐ๊ฐ ์ค์ ๋ก ์ interop์ ๊ฐ์ ๋ฐฐ์ด์ด์ด์ผ ํ๋์ง์ ๋ํ ๋ฐ๋ก๋ฅผ ์ ์ํ ๋๊น์ง ์ฌ์ ์ ๋ํ ๋ฐฐ์ด ์ ์ฌ์ฑ์ ์ ๊ฑฐํ์ต๋๋ค.
@lahma ๋ค์ ํ ๋ฒ ์ ๋ง ๊ฐ์ฌํฉ๋๋ค!