我有一些基类A,其方法不能被覆盖.
class A
def dont_override_me
puts 'class A saying, "Thank you for not overriding me!"'
end
end
Run Code Online (Sandbox Code Playgroud)
另一个扩展A并尝试覆盖该dont_override_me方法的B类.
class B < A
def dont_override_me
puts 'class B saying, "This is my implementation!"'
end
end
Run Code Online (Sandbox Code Playgroud)
如果我实例化B并调用dont_override_me,将调用B 类的实例方法.
b = B.new
b.dont_override_me # => class B saying, "This is my implementation!"
Run Code Online (Sandbox Code Playgroud)
这是因为ruby的属性.可以理解的.
但是,如何dont_override_me通过派生类强制基类方法不可覆盖?我找不到类似finaljava for ruby 的关键字.在C++中,基类方法可以是非虚拟的,这样它们就不会被派生类覆盖.我如何在ruby中实现这一目标?
关于在Python源代码中放置注释的"标准"方法:
def func():
"Func doc"
... <code>
'TODO: fix this'
#badFunc()
... <more code>
def func():
"Func doc"
... <code>
#TODO: fix this
#badFunc()
... <more code>
Run Code Online (Sandbox Code Playgroud)
我更喜欢将一般注释写为字符串而不是前缀#的.官方的Python风格指南没有提到使用字符串作为注释(如果我在阅读时没有错过它).
我喜欢这种方式主要是因为我认为这个#角色看起来很丑陋.据我所知,这些字符串不做任何事情.
这样做有缺点吗?
有人能指出我在.NET平台上开发的"完整"DDD示例.我觉得大多数例子都"不完整".
我真的很想看到DDD原则在起作用.
由于你们大多数人可能都在关注我已经知道的问题,我正在尝试创建一个程序,可以将多个结构序列化为.dat文件,通过加载它的序列化来读取它们,编辑内容,然后重新将它们写入文件等等.这是我正在尝试做的库存计划,我不能让它为我的生活工作.
我正在加载的文件是空白的.我的程序需要10秒甚至加载,现在我知道为什么.这是因为我的矢量大小就像25万.哦等等......这次我跑了它的矢量大小是5,172,285.这是一个充满结构的相当大的向量.没有任何运行时或编译错误,但我很确定我做错了什么.我正在加载的文件也是完全空白的.
码:
// Project 5.cpp : main project file.
#include "stdafx.h"
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
using namespace System;
using namespace std;
#pragma hdrstop
int checkCommand (string line);
template<typename T>
void writeVector(ofstream &out, const vector<T> &vec);
template<typename T>
vector<T> readVector(ifstream &in);
struct InventoryItem {
string Item;
string Description;
int Quantity;
int wholesaleCost;
int retailCost;
int dateAdded;
} ;
int main(void)
{
cout << "Welcome to the Inventory Manager extreme! [Version 1.0]" << endl;
ifstream …Run Code Online (Sandbox Code Playgroud) 我有一个List<String>包含国家/地区名称的对象.如何按字母顺序对此列表进行排序?
我有以下设置:
mkdir /1
mkdir /1/2
mkdir /1/2/3
ln -s /1/2/3 /1/3
Run Code Online (Sandbox Code Playgroud)
如果我这样做cd /1/3,那么pwd,我明白了/1/3.如果我使用pwd -P,我可以得到/1/2/3或pwd -L强迫/1/3.
在VIM中,我正在寻找一种方法来获得/1/3.
如果我打开一个文件/1/3/foo.txt,并使用类似的东西fnamemodify(bufname(winbufnr(0)), ':p:h'),它会返回/1/2/3.
我怎么能告诉它给我相同的目录pwd呢?
我想打印出每个进程的整数数组的内容。问题是,由于比赛条件,一切都很混乱。
什么是最简单的解决方案?我不想调试。我想显示内容,因为我正在执行排序算法。因此在排序前后显示很有用。
我在lock.c中添加了它:
#include <stdio.h>
static int lock=0; //Don't use if timing execution
void capture(int rank) {
while(lock!=0);
lock = 1;
printf("\nCaptured by %d\n", rank);
}
void release() {
lock = 0;
}
Run Code Online (Sandbox Code Playgroud)
并在打印内容之前调用capture(),然后在打印之后调用release()。是的,这是一个类似信号量的hack。但这行不通,有什么主意吗?
我像这样实现了UnaryOperation
struct Converter
{
Converter( std::size_t value ):
value_( value ), i_( 0 )
{}
std::string operator() ( const std::string& word )
{
return ( value_ & ( 1 << i_++ ) ) ?
word:
std::string( word.size(), ' ' );
}
std::size_t value_;
std::size_t i_;
};
Run Code Online (Sandbox Code Playgroud)
而且我喜欢它
std::vector v;
// initialization of v
std::transform( v.begin(), v.end(),
std::back_inserter( result ),
Converter( data ) );
Run Code Online (Sandbox Code Playgroud)
我的问题是,我可以依赖于我的假设,即算法将按照'Converter :: i_'对应于'v'中元素的数量的顺序调用我的'Converter operator()'.
如果我不能依赖订单或者使用类似stl的解决方案来避免可能出现的问题,请引用标准.
谢谢.
编辑:
我知道变换算法标准中的"无副作用"要求.我无法找到同一标准中的仿函数的"副作用".
也许这个任务有一些好看的类似解决方案?
我正在使用JAR文件中的一些类,它们属于一个包(com.abc.xyz).
我写的类也属于该包,但我无法将我的文件捆绑到该JAR文件中.是否可以将属于同一个包的类分布在多个JAR文件中?