Silverlight 中的动态语言与浏览器交互
Silverlight 具备一项 .NET 所没有的重要特性——专门用于执行动态语言的第二运行时引擎。动态语言在运行时进行解释,这意味着在程序执行期间可以添加新代码。下面将详细介绍 Silverlight 中的动态语言以及其与浏览器的交互。
1. 动态语言简介
1.1 .NET 平台与动态语言支持
.NET 平台支持多种语言,然而动态语言(如 Python 和 Ruby)在该平台上的支持相对有限。这主要是因为动态语言不经过编译,而高级语言要在 CLR 上执行,必须转换为中间语言(IL)。不过,Silverlight 在动态语言与 .NET 的结合方面取得了有趣的进展。
1.2 动态语言特点
动态语言是解释型的,通常为动态类型,无需声明特定类型的变量,一切由运行时根据表达式上下文处理。与之相对的是 C# 和 VB .NET 等静态类型语言。动态语言在开发和部署上更为简化,但会牺牲一定的类型安全性,不过可以通过大量单元测试来缓解这一问题。
1.3 函数作为一等公民
大多数动态语言的一个显著特点是函数为一等公民,可以将函数赋值给变量或作为参数传递给其他函数,这使得闭包和函数参数传递更加便捷。以下是一个简单示例,对比 C# 和 IronRuby 实现获取指定长度单词子集的方法:
C# 实现:
public static List<string> ShortWords(List<string> wordList) {