Почему файлы Objective C используют расширение.m?

Невозможно предложить какое-либо решение, если версия используемых библиотек не указана. Для rom-sql 2.4.0 это просто работает:

#!/usr/bin/env ruby

# frozen_string_literal: true

require 'bundler/inline'

gemfile(false) do
  source 'https://rubygems.org'

  gem 'sqlite3'
  gem 'rom-sql', '2.4.0'
  gem 'rspec'
end

require 'rspec'
require 'rspec/autorun'

require 'dry-types'
require 'rom-sql'
require 'sqlite3'

RSpec.describe do
  let(:uri) { 'sqlite::memory' }
  let(:conn) { Sequel.connect(uri) }
  let(:conf) { ROM::Configuration.new(:sql, conn) }
  let(:container) { ROM.container(conf) }

  let(:avatars) { container.relations[:avatars] }
  let(:users) { container.relations[:users] }

  before do
    conn.create_table(:avatars) do
      primary_key :id
      Integer :user_id
      String :url
    end

    conn.create_table(:users) { primary_key :id }

    conf.relation(:avatars) do
      schema(infer: true) do
        associations do
          belongs_to :user
        end
      end
    end

    conf.relation(:users) do
      schema(infer: true) do
        associations do
          has_many :avatars
        end
      end
    end
  end

  subject(:relation) do
    users.join(:avatars).select { relations[:avatars][:url].as(:avatar_url) }
  end

  it do
    users.insert
    avatars.insert(user_id: 1, url: 'avatars/1')
    avatars.insert(user_id: 1, url: 'avatars/2')

    expect { relation.pluck(:avatar_url) }.not_to raise_error
    expect(relation.pluck(:avatar_url)).to eq ['avatars/1', 'avatars/2']
  end
end
201
задан Cœur 26 June 2019 в 02:48
поделиться

3 ответа

Сегодня большинство людей назвало бы их "файлами метода", но

".m расширение первоначально обозначало" messages", когда Objective C был сначала представлен, относясь к центральной функции Objective C [...]"

(из книги" Изучают Objective C на Mac" Mark Dalrymple и Scott Knaster, страницей 9)

РЕДАКТИРОВАНИЕ: Для удовлетворения зуда я послал по электронной почте Brad Cox , изобретатель Objective C, о вопросе, и он ответил этой одной строкой:

, "поскольку.o и.c были взяты. Простой как это".

Вот электронная почта как визуальное доказательство:

Visual Proof

455
ответ дан nhubbard 23 November 2019 в 05:02
поделиться

Это обозначает "методы". От comp.lang.objective-C FAQ:

организация источника Objective C обычно подобна организации C или исходного кода C++ с объявлениями и интерфейсами объекта, входящими заголовок файлы, названные с.h расширением, и определениями и реализациями объектов, входящими в файлы, названные с.m (коротка для методы ) расширение.

8
ответ дан NSDeveloper 23 November 2019 в 05:02
поделиться

. m файлы содержат (m) ethods. Возможная причина?

5
ответ дан baker1990 23 November 2019 в 05:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: