swift شرح - #علامة pragma في سويفت؟




download bank (13)

استعمال

// MARK: SectionName

أو

// MARK: - SectionName

هذا سيعطي خط فوق علامة pragma ، مما يجعلها أكثر قابلية للقراءة.

لسهولة إضافة فقط

// MARK: - <#label#>

إلى مقتطفات الشفرة.

طريقة بديلة -

استخدمه بهذه الطريقة

private typealias SectionName = ViewController
private extension SectionName  {
    // Your methods
}

هذا لن يضيف فقط علامة (تماما مثل علامة pragma) ولكن أيضا فصل الرمز بشكل جيد.

في Objective C ، يمكنني استخدام #pragma mark لتمييز مقاطع من التعليمة البرمجية الخاصة بي في رمز الملاح. نظرًا لأن هذا الأمر هو أمر C preprocessor ، فإنه لا يتوفر في Swift. هل هناك استعداد لهذا في سويفت ، أو لا بد لي من استخدام التعليقات القبيحة؟


يجب أن يستخدم المبرمج المحترف هذه العلامة للحصول على رمز جيد. إنه جيد أيضًا للعمل الجماعي.

// MARK: example Web Service start here
// TODO: example 1
// FIXME: Please change BASE url before live 


في كود Objective-C ، يكشف Xcode عن تعليقات مثل // MARK: - foo التي تكون محمولة قليلاً أكثر من #pragma . لكن يبدو أن هذه الأشياء لا يتم التقاطها أيضًا (حتى الآن؟).

تحرير: ثابت في Xcode 6 بيتا 4.


//MARK: لا يبدو لي العمل في Xcode 6.3.2. ومع ذلك ، هذا ما فعلته لجعلها تعمل :

1) الرمز:

import Cocoa

class MainWindowController: NSWindowController {

    //MARK: - My cool methods

    func fly() {
    }

    func turnInvisible() {

    }
}

2) في jump bar لا يظهر أي شيء للتغيير عند إضافة //MARK : التعليق. ومع ذلك ، إذا قمت بالنقر فوق اسم أقصى اليمين في شريط الانتقال ، في حالتي تقول MainWindowController(with a leading C icon) ، عندئذ ستظهر نافذة منبثقة تعرض تأثيرات // MARK: التعليق ، أي العنوان الذي يقول "طرقي الرائعة":

3) ألاحظ أيضًا أنه إذا قمت بالنقر فوق إحدى الطرق في التعليمة البرمجية الخاصة بي ، فإن الطريقة تصبح الإدخال الموجود أقصى اليمين في شريط الانتقال. من أجل الحصول على MainWindowController(with a leading C icon) ليكون الإدخال الموجود في أقصى اليمين في شريط القفزة ، لا بد لي من النقر فوق المساحة البيضاء فوق أساليب بلدي.


ما يصل إلى Xcode 5 كانت #pragma mark موجودة.

من Xcode 6 ، يجب عليك استخدام // MARK:

تسمح هذه الميزات preprocessor إحضار بعض البنية إلى مربع القائمة المنسدلة الدالة من محرر التعليمات البرمجية المصدر.

بعض الأمثلة :

// MARK:

-> سوف يسبقه مقسم أفقي

// MARK: your text goes here

-> يضع "نصك هنا" بخط غامق في القائمة المنسدلة

// MARK: - your text goes here

-> يضع "النص الخاص بك هنا" بخط غامق في القائمة المنسدلة ، مسبوقًا بمقسم أفقي

التحديث: تمت إضافة لقطة الشاشة "لأن بعض الأشخاص لا يزال لديهم مشكلات في ذلك:


يمكنك استخدام // MARK:

تاريخي ، قبل Xcode 6 Beta 4

تحدثت للتو إلى مهندس هنا في WWDC ، والبيتا الحالية من Xcode لا تنفذ

// MARK:

أسلوب بعد ، ولكن أنا قلت الإصدارات المستقبلية سوف.

وقد اقترح أيضا أن الاستخدام الليبرالي للتمديدات الطبقية قد يكون ممارسة أفضل على أي حال. نظرًا لأن الإضافات يمكنها تنفيذ البروتوكولات ، يمكنك على سبيل المثال وضع جميع طرق تفويض عرض الجدول في أحد الإضافات وتجميع التعليمات البرمجية على مستوى أكثر لغويًا من #pragma mark .


يعالج Xcode 8 الآن كما هو متبع ويظهر مثل هذا في القائمة المنسدلة للطريقة:


تفيد Apple في أحدث إصدار من تطبيق Building Cocoa Apps ،

المترجم سويفت لا يتضمن المعالج الأولي. بدلاً من ذلك ، فإنه يستفيد من سمات وقت التحويل البرمجي وإنشاء تكوينات وميزات اللغة لإنجاز الوظيفة نفسها. لهذا السبب ، لا يتم استيراد أوامر preprocessor في Swift.

يبدو أن الحرف # لا يزال هو الطريقة التي تعمل بها مع تكوينات بناء مختلفة وأشياء من هذا القبيل ، ولكن يبدو أنها تحاول تقليل الحاجة إلى إجراء معظم عمليات المعالجة المسبقة في براغما وإحالتك إلى ميزات لغة أخرى تمامًا. ربما هذا هو للمساعدة في تشغيل Playgrounds و REPL تتصرف أقرب ما يمكن إلى التعليمات البرمجية التي تم تجميعها بالكامل.


يمكنك استخدام // MARK: و // MARK:- سريع. الخيار الثاني يضيف خط فاصل كذلك.


//# MARK: - Spinner Class Methods

أضف خطًا بين النقطتين ووصفك لإدراج خط فاصل. هذا يساعد على تنظيم التعليمات البرمجية الخاصة بك أكثر. يستخدم الرمز وقطة الشاشة أعلاه تعليق MARK مع سطر مضمّن.

  1. // # MARK: - طرق النص (خط)
  2. // # MARK: أساليب النص (لا خط)

لا يعمل هذا إلا مع تعليق MARK.


بالنسبة لأولئك الذين يرغبون في استخدام الإضافات مقابل علامات pragma (كما هو مذكور في التعليق الأول) ، إليك كيفية تنفيذه من مهندس Swift:

import UIKit

class SwiftTableViewController: UITableViewController {

    init(coder aDecoder: NSCoder!) {
        super.init(coder: aDecoder)

    }

    override func viewDidLoad() {
        super.viewDidLoad()

    }
}

extension SwiftTableViewController {
    override func numberOfSectionsInTableView(tableView: UITableView?) -> Int {
        return 1
    }

    override func tableView(tableView: UITableView?, numberOfRowsInSection section: Int) -> Int {
        return 5
    }

    override func tableView(tableView: UITableView?, cellForRowAtIndexPath indexPath: NSIndexPath?) -> UITableViewCell? {
        let cell = tableView?.dequeueReusableCellWithIdentifier("myCell", forIndexPath: indexPath) as UITableViewCell;

        cell.textLabel.text = "Hello World"

        return cell
    }

}

كما أنه ليس بالضرورة أفضل الممارسات ، ولكن هذه هي الطريقة التي تفعلها إذا أردت.


هناك ثلاثة خيارات لإضافة #pragma_mark في Swift:

1) // MARK: - your text here -

2) // TODO: - your text here -

3) // FIXME: - your text here -

ملاحظة: الاستخدامات - لإضافة الفواصل


تبدأ القصة بأكملها بميزة swift تسمى vars الاختيارية. هذه هي الفارسية التي قد يكون لها قيمة أو قد لا يكون لها قيمة. بشكل عام ، لا يسمح لنا استخدام متغير لا بدايته ، حيث قد يؤدي ذلك إلى حدوث أعطال أو أسباب غير متوقعة وكذلك توفير عنصر نائب للنوافذ الخلفية. وبالتالي من أجل الإعلان عن متغير لا يتم تحديد قيمته بدايةً ، فإننا نستخدم "؟". عندما يتم الإعلان عن مثل هذا المتغير ، لاستخدامه كجزء من بعض التعبيرات ، يتعين على الشخص إزالته قبل الاستخدام ، وهو عملية يتم من خلالها اكتشاف قيمة متغير ما ينطبق على الكائنات. بدون إزالة التغليف إذا حاولت استخدامهم ، سيكون لديك خطأ وقت في الترجمة. لإزالة متغير متغير var اختياري ، علامة التعجب "!" يستخدم.

الآن هناك أوقات تعلم فيها أن هذه المتغيرات الاختيارية سيتم تعيين قيمها حسب النظام على سبيل المثال أو البرنامج الخاص بك ولكن في وقت ما لاحقًا ، على سبيل المثال منافذ واجهة المستخدم ، في مثل هذه الحالة بدلاً من الإعلان عن متغير اختياري باستخدام علامة استفهام "؟" نحن نستخدم "!".

وهكذا يعرف النظام أن هذا المتغير المعلن عنه بـ "!" هو اختياري الآن وليس له قيمة ، ولكنه سيحصل على قيمة في وقت لاحق من عمره.

وبالتالي ، فإن علامة التعجب تحتوي على استخدامين مختلفين ، 1. للإعلان عن متغير والذي سيكون اختياريًا وسيتلقى قيمة في وقت لاحق لاحقًا 2. لإلغاء التفاف متغير اختياري قبل استخدامه في تعبير.

الأوصاف المذكورة أعلاه تتجنب الكثير من الأمور التقنية ، آمل.







swift