我发现这个代码示例,我认为编写得非常好,但是我很难理解为什么它的部分工作原理.
代码搜索字符串中最长的单词:
def LongestWord(str):
''.join(map(lambda x: [' ',x][x.isalnum()], str)).split()
Run Code Online (Sandbox Code Playgroud)
我不知道是怎么[' ',x][x.isalnum()]运作的.这个结构有名字吗?
我试图自学C ++类,但遇到了一个绊脚石,我似乎无法解决。我希望有人能够指出正确的方向。
我决定构造一个小类,Tree该类构造一个新的BST。我希望能够像这样在我的对象上调用某些方法:
int main() {
Tree<int> tree1;
tree1.insert(5);
int treeMin = tree1.minValue();
int treeMax = tree1.maxValue();
tree1.printTree();
}
Run Code Online (Sandbox Code Playgroud)
现在,为了调用这些函数,我同时定义了public和private函数,以便您不会以多余的方式调用函数。例如:
(我想避免的事情)
int main() {
Tree<int> tree1;
tree1.insert(tree1, 5);
int treeMin = tree1.minValue(tree1);
int treeMax = tree1.maxValue(tree1);
tree1.printTree(tree1);
}
Run Code Online (Sandbox Code Playgroud)
为了避免出现这种冗余,我定义了同一功能的公共和私有版本。这样,公共职能部门会调用其私人部门。
template<class T>
class Tree {
private:
treeNode<T>* root;
treeNode<T>* newNode(T data);
void insert(treeNode<T>*& root, T data);
int minValue(treeNode<T>*& root);
int maxValue(treeNode<T>*& root);
void printTree(treeNode<T>*& root);
public:
Tree();
~Tree();
void insert(T data);
int minValue();
int maxValue(); …Run Code Online (Sandbox Code Playgroud)