小编Ale*_*ang的帖子

使用 Liquid 标签 Jekyll 进行 URL 字符串插值

我正在尝试让 Jekyll 动态生成链接。该链接适用于 CSS 文件,但取决于正在呈现的页面。

即如果页面被联系,它应该呈现mywebsite.com/lib/css/contact.css

我遇到的问题是,当我尝试嵌套液体标签时,它无法正确解析名称。它似乎将整个字符串视为文字字符串而不是解析名称。

我尝试过以下方法:

注意:layout.cssFile是一个页面变量,其中包含我希望渲染的 CSS 文件的名称。

尝试1:

<link href="{{ lib/css/" | append:  layout.cssFile }} | relative_url }}" rel="stylesheet">
Run Code Online (Sandbox Code Playgroud)

尝试2:

<link href="{{ "lib/css/{{ layout.cssFile }} | relative_url }}" rel="stylesheet"> 
Run Code Online (Sandbox Code Playgroud)

尝试3:

{% assign cssPath="lib/css/{{layout.cssFile}}" %}
  <link href="{{ cssPath | relative_url }}" rel="stylesheet"> 
Run Code Online (Sandbox Code Playgroud)

这些都不起作用。我怎样才能以一种干净的方式编写它,使其易于阅读并且达到我想要的效果?

liquid jekyll

1
推荐指数
1
解决办法
1706
查看次数

将for_each与std :: unique_ptr一起使用

当我尝试使用for_each算法时,我遇到以下错误std::unique_ptr.我在下面的profile.h部分放大了它.

奇怪的是,如果我将其更改为能够编译std::shared_ptr,我怀疑它是按值获取容器的元素,因此不喜欢对unique_ptrs的引用.但是,我希望它unique_ptr理想情况下,因为这些任务应该放在ToRun_容器内,并Completed_在任务执行后移动到容器,所以shared_ptr这里没有任何好处.

我得到的错误是:

调用类型为'的对象没有匹配函数(Lambda at Profile.cpp:429:54)'

__f(*__第一);

这是指这行代码:

for_each(ToRun_.begin(), ToRun_.end(), [&os](std::unique_ptr<Task>& e){
  if (e){
    os << e->getName() <<'\n';
  }
});
Run Code Online (Sandbox Code Playgroud)

在我将其转换为使用智能指针之前,我使用了原始指针,我可以保证e->getName()100%工作.我的困惑是为什么在这种情况下它不起作用?我该怎么做才能使它正常工作?

Profile.h

#include <algorithm>
#include <vector>
#include <map>
#include <iostream>
#include "Task.h"
#include "Global.h" //Where my user defined global functions go

class Profile{
  std::vector<std::unique_ptr<Task>>ToRun_;
  std::vector<std::unique_ptr<Task>>Completed_;
  std::vector<std::string>menu_;
  //Ownership of ofstream object
  std::ofstream& of_;
public:
  Profile (const char* filename, std::ofstream& os, ARAIG_sensors& as);
  virtual …
Run Code Online (Sandbox Code Playgroud)

c++ algorithm lambda unique-ptr c++11

0
推荐指数
1
解决办法
608
查看次数

标签 统计

algorithm ×1

c++ ×1

c++11 ×1

jekyll ×1

lambda ×1

liquid ×1

unique-ptr ×1