这是严格的理论.
module BleeTest
def meth
puts 'foo'
end
end
Run Code Online (Sandbox Code Playgroud)
这段代码运行没有错误,但是有可能调用方法"meth"吗?
在我看来,"meth"是一个无法实例化的模块的实例方法.但那么为什么翻译允许这种结构呢?
C++ 中有没有一种方法可以构造您的类,以便给定一个指向您的类的指针,您可以指示dynamic_cast<>() 如何转换为您要包装其实现的另一个类?运算符强制转换可以解决问题吗?想象一下,我有一个抽象接口基类,并从中派生出一个creteA和一个concreteB,但concreteB将该接口包装到一个concreteA类型的对象。如果我收到从creteA转换为concreteA的请求,我希望它能够工作:
class Abstract {
public:
virtual void interface() = 0;
};
class concreteA : public Abstract {
public:
virtual void interface();
};
class concreteB : public Abstract {
public:
concreteB(concreteA &underlying)
: _underlying(&underlying) {
}
virtual void interface();
operator concreteA*() {
return _underlying;
}
private:
concreteA *_underlying;
};
void
myTest() {
concreteA myClassA;
concreteB myClassB(myClassA);
Abstract *abstract = &myClassB;
concreteA *underlying = dynamic_cast<concreteA *>(abstract);
}
Run Code Online (Sandbox Code Playgroud) 如果 post.published?
.post
/ Post stuff
Run Code Online (Sandbox Code Playgroud)
除此以外
.post.gray
/ Post stuff
Run Code Online (Sandbox Code Playgroud)
我用rails helper实现了它,看起来很难看.
= content_tag :div, :class => "post" + (" gray" unless post.published?).to_s do
/ Post stuff
Run Code Online (Sandbox Code Playgroud)
第二种变体:
= content_tag :div, :class => "post" + (post.published? ? "" : " gray") do
/ Post stuff
Run Code Online (Sandbox Code Playgroud)
是否有更简单和特定于haml的方式?
UPD.特定于Haml,但仍然不简单:
%div{:class => "post" + (" gray" unless post.published?).to_s}
/ Post stuff
Run Code Online (Sandbox Code Playgroud) 我是自学成才的php程序员,所以我常常不知道"正确"的做事方式.我想规范我的PHP,HTML和MySQL数据之间的字符编码实践.
- 住在美国,
- 在讲英语的人的网站上工作
- 我将遇到的大多数外语是西方语言(西班牙语,意大利语,法语)
- 住在纽约附近我可能会遇到希伯来语,俄语等我会避免使用他们的角色系统,只会使用任何必要的口音来使用拉丁字符.
有人想评论我应该选择UTF-8还是ISO-8859-1?或者是其他东西?克里斯
我需要创建一个YAML文件来存储Perl脚本的一些配置数据.这似乎应该很容易,但我还没有能够解决它,我想如果我只有一个简单的例子来复制我会没事的.我想做这样的事情:
-----test.yaml-----
image_width: 500
show_values: 0
-------------------
------test.perl------
use YAML;
my (%settings) = Load('test.yaml');
print "The image width is", $settings{image_width};
---------------------
Run Code Online (Sandbox Code Playgroud) 我在ASP.NET页面上有一个DropDownList,它由SQL数据库填充.
<asp:DropDownList ID="ddlName" runat="server"></asp:DropDownList>
Run Code Online (Sandbox Code Playgroud)
人口在文件背后的代码中:
ddlName.DataSource = SqlDataSource1;
ddlName.DataValueField = (this.ddlName.SelectedValue);
ddlName.DataTextField = "ccName";
ddlName.DataBind();
Run Code Online (Sandbox Code Playgroud)
我想知道是否可以根据它的值更改列表中项目的背景或文本颜色?
我刚刚注意到,下面的示例在页面首次加载时起作用但在回发时文本颜色消失,即使这是代码所在的位置.有什么我想念的吗?
protected override void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
ddlName.DataSource = SqlDataSource5;
ddlName.DataValueField = (this.ddlName.SelectedValue);
ddlName.DataTextField = "ccName";
ddlName.DataBind();
foreach (ListItem item in ddlName.Items)
{
if (item.Value == "Item 1")
{
item.Attributes.Add("style", "color:red");
}
if (item.Value == "Item 2")
{
item.Attributes.Add("style", "color:red");
}
}
}
}
Run Code Online (Sandbox Code Playgroud) 当毫秒存储为'long'时,我正在寻找向Java Date添加毫秒的最佳方法.Java日历有一个add函数,但它只需要一个'int'作为数量.
这是我提出的一个解决方案......
Calendar now = Calendar.getInstance();
Calendar timeout = Calendar.getInstance();
timeout.setTime(token.getCreatedOn());
timeout.setTimeInMillis(timeout.getTimeInMillis() + token.getExpiresIn());
Run Code Online (Sandbox Code Playgroud)
还有其他建议吗?
我从一张桌子中得到了奇怪的结果.请考虑下表:
USERID TICKETSASSIGNED
1 0
100 0
101 0
102 0
103 0
Run Code Online (Sandbox Code Playgroud)
现在,如果我有以下sql:
SELECT TOP 1 USERID
FROM TABLEX
ORDER BY TICKETSASSIGNED
Run Code Online (Sandbox Code Playgroud)
我期望得到的结果是"1",但大多数时候我得到"100",第二个记录.因为TICKETSASSIGNED值都是"0",所以它会随机选择它认为是TOP 1的那个,因为这是我订购的字段.要在这种情况下获得正确的"1"值,我还必须订购USERID.
有任何想法吗?
我有一个SearchService与Search()检索的方法IEnumerable<Search>从一个存储库.这些Search对象直接来自LINQ To SQL.接下来我使用AutoMapper将这些Search类型转换为SearchModel类型(稍后它们会被传递到控制器中).
var searches = searchRepository.GetByUserID(userID);
var models = Mapper.Map<IEnumerable<Search>, IEnumerable<SearchModel>>(searches);
Run Code Online (Sandbox Code Playgroud)
问题是Search有一个属性DateCreated是UTC DateTime.我需要根据登录用户的当地时区更正日期.我可以foreach在服务内部执行此操作,如下所示:
var searches = searchRepository.GetByUserID(userID);
foreach (var search in searches)
{
search.DateCreated = search.DateCreated.ToTimezone(userTimezoneID);
}
var models = Mapper.Map<IEnumerable<Search>, IEnumerable<SearchModel>>(searches);
Run Code Online (Sandbox Code Playgroud)
虽然这有效(并且可能是唯一的选择),但我想使用AutoMapper IValueFormatter.例如,我有一些其他值格式化程序,例如相对时间.
我的问题是:这可以做到吗?我不确定,因为我想我需要将其他信息传递给AutoMapper,以便它知道用于进行转换的时区ID.
我也试图避免从Search- > User关系中得到这个,因为我在用户登录时将它存储在cookie中(并且希望避免数据库JOIN检索它).如何将此时区ID传递给AutoMapper,以便它可以为每个用户执行自定义映射?
每当我使用双精度和整数编写函数时,我发现这个问题,我不断在我的函数中到处使用'fromIntegral'.例如:
import Data.List
roundDouble
:: Double
-> Int
-> Double
roundDouble x acc = fromIntegral (round $ x * 10 ** fromIntegral acc) / 10 ** fromIntegral acc
Run Code Online (Sandbox Code Playgroud)
有没有更简单的方法来写这个?(我知道可能有更简单的方法来舍入数字,如果有,请告诉我!但我主要感兴趣的是如何避免使用这么多'fromIntegrals'.)
谢谢,阿什