Arrays 是否有一种普遍接受的方法向数组元素添加元信息,以指示如何处理它们?
我使用的是一个数组,其中包含数据库查询的结果,该查询后来被格式化为html(用于Web应用程序)或csv(用于在电子表格中导入)。 我想将信息附加到数组元素,其中包含有关如何使用此元素的数据的其他信息 例如,数组元素数据Arrays 是否有一种普遍接受的方法向数组元素添加元信息,以指示如何处理它们?,arrays,metadata,element,Arrays,Metadata,Element,我使用的是一个数组,其中包含数据库查询的结果,该查询后来被格式化为html(用于Web应用程序)或csv(用于在电子表格中导入)。 我想将信息附加到数组元素,其中包含有关如何使用此元素的数据的其他信息 例如,数组元素数据 。。。可以显示为链接:然后我希望附加链接信息。从数组创建html的代码可以使用它创建链接 。。。是格式为2009-09-14的日期:然后我想以某种方式将其标记为日期。如果使用的是html页面,则可以显示更漂亮的页面,例如Mo Sep 14或Today;如果收件人是csv,最好
- 。。。可以显示为链接:然后我希望附加链接信息。从数组创建html的代码可以使用它创建链接
- 。。。是格式为
的日期:然后我想以某种方式将其标记为日期。如果使用的是html页面,则可以显示更漂亮的页面,例如Mo Sep 14或Today;如果收件人是csv,最好离开它2009-09-14
.to_string()
方法李>
a[5][7][text']
或a[5][7][link']
textArray[5][7]
,linkArray[5][7]
或者我只是问了一个错误的问题?除非您指定一种语言,(1)和(2)基本相同。对象或散列,除了语法之外,动态编程语言还有什么区别?在卢阿,一切都是字典 (1) /(2)通常优于(3),因为它们通常使复制元素及其元数据更容易。例如,在排序时
因此,在不特定于语言/环境的情况下,在没有任何特殊条件的情况下,最佳实践是以某种方式组合元数据和元素,并处理生成的数据类型。您可以通过定义一个包含这两个元素的新类、定义一个或多个原始元素类型的子类、使用泛型对、使用通用字典或仅将元数据存储在原始对象中来实现这一点(这在Javascript中是显而易见的方法).作为一般建议,最好数据中不包含任何关于如何表示自身的信息 相反,应用程序中创建表示的部分应该在单独的数据结构中具有这些设置。可以将其视为一个XML文件和创建不同表示的各种XSLT文件 但是,如果不可能,或者必须将两个信息合并到一个数据结构中进行实际转换,我遵循以下经验法则: 不要太聪明,用你的语言做最自然的事强>
- 在Java和Delphi中,我总是使用“custom object”变体,因为它具有某些优点,比如编译时检查
- 在PHP中,我总是使用哈希,因为它更像PHP风格
我有时会做“解决方案3”,但我总是后悔。这些结构往往会成为维护的噩梦,从数据角度和编码角度来看,您很可能会遇到同步问题。web框架中的一种常见方法是将记录映射到对象上:将数据库中的一条记录读入一个对象,因此您的结果是一个对象数组。对于不同的表,您需要不同的类。这是许多web框架中使用的模型-视图-控制器(MVC)模式的构建块之一 例如,在RubyonRails中,表
users
由类User
处理。您可以使用脚手架创建这两个对象
ruby script\generate scaffold user lastname:string link:string joined:date
Date、Boolean、String、Text、Decimal和Integer在这里是不同的数据类型。不幸的是,URL不是,所以我必须使用字符串作为链接
您可以如下方式从数据库读取用户:
@u = User.find(77) # gives you one object
@list = User.find(:all) # gives you an array of User-objects
<h1>Listing Users</h1>
<table>
<tr>
<th>Lastname</th>
<th>Link</th>
<th>Joined on</th>
</tr>
<% @list.each do |user| %>
<tr>
<td><%=h user.lastname %></td>
<td><%= link_to "Homepage", user.link %></td>
<td><%=h user.joined %></td>
</tr>
<% end %>
</table>
用户对象的属性具有处理日期、数字等的正确类型:
如果100.days.ago<@u.join,那么
数据固有的逻辑在用户类中实现
用户列表可以使用如下视图以HTML格式显示:
@u = User.find(77) # gives you one object
@list = User.find(:all) # gives you an array of User-objects
<h1>Listing Users</h1>
<table>
<tr>
<th>Lastname</th>
<th>Link</th>
<th>Joined on</th>
</tr>
<% @list.each do |user| %>
<tr>
<td><%=h user.lastname %></td>
<td><%= link_to "Homepage", user.link %></td>
<td><%=h user.joined %></td>
</tr>
<% end %>
</table>
列出用户
姓氏
链接
加入
显示数据所固有的逻辑在视图中实现。
将对象的哪个属性视为链接或普通文本的知识存在于视图中,而不是对象本身
通过创建一个cvs视图来显示/输出与cvs相同的数据。一个数组。。。在编程语言中?你说的是哪种编程语言?非常感谢,它们都有不同的方面,这很有价值!我最终使用一个对象来存储信息。但正如DR所建议的那样,不包括任何关于如何表现自己的信息,而是让接收者决定,因为他们知道对象的类别。一个例外是为了方便起见添加的_toString(),作为默认文本表示形式,“他的生日是$date”。顺便说一句,我使用的语言是PHP,我认为只要支持“常用”结构(数组、哈希、类),这就不那么重要了。不过,我没有使用ORM映射(LaRails)。“如果数据中根本不包含关于如何表示自身的信息,那就最好了”——不过,我认为URL是可以的。我确实认为,如果字符串要显示给用户,to_字符串开始测试对象的合理责任限制。如果没有