- 浏览: 99450 次
- 性别:
- 来自: 合肥
最新评论
-
helloqidi:
谢谢,学习了。
娃娃鸭学Ruby-34、可枚举的对象
文章列表
Unless
unless,作为一个语句或修饰符,和if恰好相反:当且仅当与其关联的表达式的值为false或nil,它才会执行相应的代码。
unless condition
code
end
unless condition
code
else
code
end
s=unless o.nil?
o.to_s
end
s=unless o.nil? then o.to_s end
unless x==0
puts "x is not 0"
else
unless y==0
puts "y is not 0"
else
...
5.3使用Routes
注册Area Route
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
AreaRegistration.RegisterAllAreas();
routes.MapRoute(
"Default",
&qu ...
作为修饰符的if
采用if的普通语句形式时,Ruby的语法要求其结尾必须有一个end关键字
if expression then code end
而改写成:
code if expression
puts message if messge
if的优先级非常低
y=x.invert if x.respond_to?:invert
y=(x.invert if x.respond_to?:invert)
puts message if message and defined? puts
2011-4-17 16:47 danny
if
if 是最简单的条件式,具有多种形式
if expression
code
end
----------------------------------------
expression的值不是false或nil运行
可以有关键字 then
if x<10
x+=1
end
if x<10 then x+1 end
if x<10 then
x+=1
end
1、else
if expression
code
else
code
end
if data
data<<x
else
data=[x]
end
2、elsif
...
URL的匹配规则
-site/{controller}/{action}/{id}
可以匹配
/site/products/display/123
不能匹配
/products/display/123
{language}-{country}/{controller}/{action}
匹配
/chines-china/products/display
{controller}.{action}.{id}
匹配
/products.display.123
{controller}{action}/{id}
无法匹配
默认路由
public ActionResult List(){re ...
5.1Url和Routes介绍
关于Urls
-域名好记好拼写
-URL尽量短
-URL好输入 (&少用特殊字符)
-URL可以体现网站的结构 (逻辑结构)
-URL规律性强,用户可以自行猜测构造
-URL固定,并持久不变
以前的例子
http://example.com/products/list.aspx?id=123&catid=3333&page=3
URL和硬盘文件相关,
多数情况下,HTML模板,
ASP.NET MVC Routing介绍
-接受用户输入并指向Controller的Action
-把Controller的Action输出成URLs
Rout ...
操作符
在Ruby语言中,一个操作符是一个标记。
操作数本身是表达式
操作符的元数 指它的操作数的个数
操作符的优先级
多个同样优先级的操作符,求值顺序由操作符的结合性来决定。
结合性 “L" 表示 从左到右进行求 ...
View引擎介绍
Request =>Routing=>Controller=>ViewResult=>ViewEngine=>Response
配置Viewengine
对ViewEngine的配置写在Global.asax.cs
protected void Application_Start()
{
ViewEngines.Engines.clear();
ViewEngines.Engines.Add(new MyViewEngine());
RegisterRoutes(RouteTable.Routes);
}
IViewEngine接口
...
赋值
一个赋值表达式可以为一个或多个左值(lvalue)指定一个或多个值。
左值 可以出现在一个赋值操作符左侧的东西。
在Ruby中变量、常量、属性及数组元素是左值。
在Ruby中三种不同形式的赋值表达式。
x=1
x,y,z=1,2,3 # set x to 1,y to 2 ,z to 3
x=y=0 #从右到左的顺序依次求值
幂等
赋值操作不是幂等的。
1、对变量进行赋值
Ruby拥有四种类型的变量:局部变量、全局变量、实例变量及类变量
赋值操作的行为是一样的
Ruby的实例变量是永远不可见的。
point.x,point.y=1,2
左值不是变量而是属性。
class ...
方法调用
方法调用由四部分组成:
一个任意的表达式,它的值就是将要在其上调用该方法的对象 。 .或::
被调用的方法名称
将要传递给该方法的参数值。参数列表可以置于一对圆括号中,可选
一个可选的代码块, 位于一对花括号或一个do/end中。
puts "hello world"
Math.sqrt(2) #
message.length
a.each{|x| p x}
message.length方法
调用的时候
message.length
省略括号 更像是一个引用。
属性访问方法
属性可变方法
message.length=(3 ...
HtmlHelper类(续)
Html.TextArea
用于生成<textarea>标签
<%:Html.TextArea("text","Hello<br/>world")%>
输出结果
<textArea cols="20" id="text" name="text" rows="2"> hello
<br/>world </textarea>
<%:Html.TextAre ...
HtmlHelper类
<%Html.
MVC1
<%:Html.TextBoxFor("PropertyName")%>
MVC2
<%:Html.TextBoxFor(m=>m.PropertyName)%>
Html.Encode
等价于:
<%:%>
Html.TextBox
<%:Html.TextBox("name")%>
等价于
<input id="name" name="name" type="text" ...
常量引用
除了值在运行期间保持不变外,常量类似于变量。
Ruby解释器并不保证常量的常量性,修改常量的值,发出一警告
除了以大写字母开头之外,常量的名字看起来类似变量的名字
按惯例
大多数常量名都是全部大写,并且使用下划线来分隔单词 LIKE_THIS
Ruby的类和模块名也是常量,惯例:采用驼峰格式 LikeThis
CM_PER_INCH=2.54
CM_PER_INCH # 引用常量 ,计算值
Conversions::CM_PER_INCH #
modules[0]::NAME #
2011-4-8 15:07 danny
ViewDataDictionary类
View 负责输出数据而非样式
指定View
指定View作为输出
public class HomeController
{
public ActionResult Index()
{
ViewData["Message"]="abc";
return View("~/url/other/view.aspx");
}
}
非强类型写法
public ActionResult List()
{
var products=new List<Product>( ...
变量引用
一个变量就是一个值的名字。
通过赋值表达式可以创建变量并对其赋值。
当一个变量名不是出现在赋值操作的左侧时,它就是一个变量引用表达式,而且会被求值成该变量的值。
one=1.0 # 赋值
one # 求值 1.0
1、未初始化的变量
使用变量前对其初始化
有些情况下,允许你使用没有被初始化的变量。
类变量
在使用类变量之前,必须对其进行赋值。未被赋值,引用,抛出NameError
实例变量
未被初始化的实例变量,Ruby返回nil
-w 会发出警告
全局变量
类似实例变量
-w 会发出警告
局部变量
没有一个标点符号作为前缀,
...