hash1.each_with_object({}) { |(k, v), h| h[hash2[k]] = v }
#=> {"["=>"]", "{"=>"}", "("=>")", ")"=>"(", "}"=>"{", "]"=>"["}
Или:
hash2.each_with_object({}) { |(k, v), h| h[v] = hash1[k] }
#=> {"["=>"]", "{"=>"}", "("=>")", ")"=>"(", "}"=>"{", "]"=>"["}
Блок является "минимальной единицей.NET развертывания". Обычно блок соответствует единственному файлу, но он не имеет к - у Вас может быть несколько файлов с одним из них являющийся ведущим устройством, которое знает, где все другие биты.
Однофайловыми сборками обычно является DLLs или EXE-файлы. Если у Вас есть нормальная библиотека классов, и Вы просто хотите отправить ее другой стороне, DLL - то, что Вы хотите. Я только волновался бы о более сложных сценариях как и когда Вы сталкиваетесь с ними :)
Ну.NET dll является блоком, но exe's.NET может быть блоками также, так, чтобы средства, что вся.NET dlls является блоками, но реверс не верен.
Вы не должны отправлять фактический код клиенту. Скорее Вы должны иметь определения типа с обеих сторон (клиент и сервер) и отправить сериализированные экземпляры между двумя.
Блок является предварительным скомпилированным кодом, который будет передан в .net JIT Runtime.
Это - независимый от машины формат для кода, который может быть выполнен любым .net Command Lanuage Runtime.
DLLs и EXEs являются распространенными форматами для блоков.
Ну, "блок" является термином, использованным для ресурса.NET. Это не обязательно DLL. DLL может быть ресурсом.NET, но это может также быть "собственный" ресурс также. Блок может быть упакован в DLL или в EXE. Это просто зависит от конкретного блока.
Если это похоже на Ваш другой вопрос, необходимо отправить файл, который содержит блок. Вы смогли делать что-то более сложное, но это будет просто это.
.Exe 1.Это исходящий файл. 2. Для каждого приложения существует только один файл .exe. 3. .Exe нельзя использовать совместно с другими приложениями.
.dll 1.Это внутренний файл. 2. В одном приложении может существовать множество файлов .dll. 3. .dll можно использовать совместно с другими приложениями.